在linux中文件权限设置对于普通文件和目录文件来讲产生的控制是不一样的。java
r(read):可读取此文件的实际内容,例如文本文件的内容linux
w(write):文件写入权限,能够修改、新增和删除文件的内容bash
x(execute):文件可被系统执行的权限spa
r(read contents in directory):表示具备读取目录结构列表的权限,当具备目录r权限时能够经过ls命令将该目录下全部文件的文件名列表显示出来,此外其余信息没法获取操作系统
w(modify contents of directory):表示具备更改目录结构列表的权限。包括在该目录下建立删除文件与目录,重命名文件或目录,转移该目录下文件或目录到新的位置code
x(access directory):表示具备访问当前目录的权限blog
Linux中文件权限的修改经过chmod命令,权限的设置方法包括两种:1数字类型改变文件权限;2字符类型改变文件权限。下面咱们分别讲解两种方式。进程
使用示例:it
1.设置文件/tmp/test/last.txt的权限为全部者可读可写可执行,用户组和不属于本组的其余人没有任何权限,对应的Linux命令以下ast
chmod u=rwx,g=,o= test.txt
2.为用户组新增读权限Linux命令以下
chmod g+r test.txt
3.剥夺文件全部者的写入权限,Linux命令以下
chmod u-w test.txt
r:4
w:2
x:1
使用示例:
修改目录/tmp/test的权限为rwxrwx---修改权限指令对应以下:
chmod -R 770 /tmp/test
umask主要用于指定用户在新建文件和目录时的"默认全部权限须要减去的权限"。
文件和目录的默认权限
若用户新建文件,默认是没有可执行的权限“x”,也就是只有r、w两个权限,默认权限的数字表示为666,字符表示为-rw-rw-rw.
若用户新建目录,由于x权限提供了进入这个目录的权限因此目录默认全部权限均开放,默认权限的数字表示为777,字符表示为drwxrwxrwx
1 - 查看默认权限umask
## 1.方法一直接输入umask查看数字形态的权限设置分数 umask ## 2.方法二指定参数-S以符号类型查看默认权限 umask -S
umask的默认权限设置分数为022,对应的字符表示为--w--w--w-
1)用户新建文件时,默认文件拥有的全部权限为666减去umask的权限设置参数022,得出新建文件的默认权限为644,字符表示为-rw-r--r--,也就是新建文件文件全部者默认具有可读可写权限,用户组和其余用户只有可读权限;
2)用户新建目录时,默认目录拥有的全部权限为777减去mask的权限设置参数022,得出新建目录的默认权限为755,权限字符表示为drwxr-xr-x,也就是新建目录文件全部者拥有读、写、执行全部权限,所在用户组和其余用户只有读和执行权限,也就是用户组和其余用户只能进入该目录查看目录下的文件和子目录的列表信息
2 - 设置文件和目录的默认权限
可直接在umask命令以后设置文件和目录“默认全部权限须要减去的权限”进而肯定文件和目录的默认权限
umask 002 ## 1.文件默认拥有的全部权限为666,减去002,得出用户新建文件的默认权限为664,即-rw-rw-r--,文件全部者和用户组用户均拥##有文件的读写权限,其余用户只有读权限 ## 2.目录默认的全部者权限为777,减去002,得出用户新建文件的默认权限为775,即drwxrwxr-x,文件全部者和用户组用户均 ## 拥有文件的读、写、执行权限,其余用户只有读和执行权限便可以进入该目录获取子目录和文件信息,但若是没有文件的读权限r则不## 能读取文件内容
咱们以前了解的文件权限只有r(读)、w(写)和x(执行)权限,但在有时候使用ls -l查看文件和目录文件属性会发现部分文件或目录的权限列信息有些奇怪,例如:
-rwsr-xr-x ......................
这里s就是咱们要讲的文件的特殊权限,文件的特殊权限与系统的进程有关感兴趣的能够自行去了解,咱们这边只作简单了解和设置
当s这个符号出现再文件全部者权限x的位置例如-rwsr-xr-x时文件就具备SUID特殊权限,那么SUID特殊权限有什么用呢,简单来说SUID有如下的做用和使用限制:
1)SUID对于目录无效,且仅对二进制程序有效;
2)执行者须要对该可执行文件具备x(可执行)权限;
3)本权限仅在执行程序的过程当中有效;
4)程序执行过程当中短暂的得到文件全部者的权限。
简单来说就是设置了SUID特殊权限的文件,用户只要拥有该文件的执行权限那么在执行过程当中就能短暂得到文件全部者的全部权限,进行一些该用户自己无权限进行的操做。
当s符号出如今文件所属用户组权限中x的位置例如-rwx--s--x,这就被称为SGID特殊权限,SGID特殊权限对于文件和目录均有效。
对于文件来讲SGID有如下功能和使用限制:
1)SGID只对二进制程序有效;
2)文件执行者须要具有该文件的x权限;
3)程序只在执行过程当中短暂得到文件所属用户组的权限。
## 1.以用户zhangyanqing登录系统 ## 咱们知道操做系统中有一个文件列表库,位于/var/lib/mlocate/mlocate.db,locate命令经过查询这个文件列表库查找文件 ## 咱们先使用ls命令来看看该文件的权限信息 ls -l /var/lib/mlocate/mlocate.db 终端显示结果: -rw-r-----. 1 root slocate 3472922 8月 3 09:53 /var/lib/mlocate/mlocate.db ## 从结果中能够看出只有文件全部者root和所属用户组slocate有查看该文件内容的权限那么咱们使用locate怎么能查看该文件内容## ,先使用which命令查看locate命令所在的文件路径 which locate ## 终端显示:/usr/bin/locate ## 使用ls -l查看locate文件权限 ls -l /usr/bin/locate ## 终端显示:-rwx--s--x. 1 root slocate 40512 11月 5 2016 /usr/bin/locate ## 到这里咱们就清楚了,根据命令执行结果能够知道locate命令具备SGID特殊权限,普通用户属于其余用户只有locate的x执行权限 ## 但因为locate的SGID的特殊权限在locate命令执行时当前用户拥有用户组slocate的全部权限, ## 所以能够访问操做系统文件列表库/var/lib/mlocate/mlocate.db
对于目录来讲SGID具备以下功能和使用限制:
1)若用户对该目录具备r和x权限,用户能够进入该目录;
2)用户在此目录下具备w的权限,则用户所建立的新文件的用户组与此目录的用户组相同;
3)用户在此目录下的有效用户组将会变成此目录的用户组
当t符号出如今文件其余人权限中x的位置时例如drwxrwxrwt,这时文件具备SBIT特殊权限。SBIT目前只对目录有效,它的主要做用和使用限制是:
1)用户对目录具备wx的权限;
2)该目录加上了SBIT特殊权限则当用户在该目录下建立文件或目录时,则除了root用户,只有该用户能删除、重命名和移动本身建立的文件和目录,而没法删除其余用户的文件
1)数字法设置:
咱们都知道数字法设置文件权限方式是三个数字的组合xyz,三个数字分别标识文件全部者、所属用户组和其余用户的权限,那么文件特殊权限的设置其实就是在前面加上一个数字标识特殊权限,三个特殊权限的数字标识分别以下:
SUID : 4
SGID : 2
SBIT : 1
使用示例:
## 1.为文件test.sh增长SUID特殊权限 chmod 4755 test.sh ## 2.为文件test.sh增长SGID权限 chmod 2755 test.sh ## 3.为目录/tmp增长SBIT权限 chmod 1766 /tmp ## 4.为文件test.sh增长SUID和SGID特殊权限 chmod 6755 test.sh
2 )符号法设置:
符号法设置特殊权限命令以下
SUID : chmod u+s 文件
SGID :chmod g+s 文件或目录
SBIT :chmod o+t 目录