ls命令可查看文件权限
输出结果的第一个字段即描述了文件和目录权限的编码。
第一个字符代表了对象的类型:
-代表文件
d代表目录
l代表链接
c代表字符型设备
b代表块设备
n代表网络设备
后面的三组字符,每组都定义了三种访问权限
r 代表对象可读
w 代表对象可写
x 代表对象可执行
若没有某种权限,该权限位置会出现单破折线代替,分别为(对象的属主,对象的属组,系统其他用户)
w位置被取代,说明其他用户没有写的权限
umask命令可以用来显示和设置所创建文件和目录的默认权限
0022的第一位代表了一项特别的安全特性,叫做“黏着位”(后续会讲到这个东西)
后面三位表示文件或者目录对应的umask八进制值,将每一个八进制位其转化为3位二进制
三位的八进制数分别代表了属主、属组和其他用户的读写权限,例如664代表了属组和属主成员都有读和写的权限,而其他用户只有读的权限。
掩码:指的是一串二进制数字,通过与目标数字的按位操作,达到屏蔽指定位而实现需求。
Linux系统上默认的八进制umask值为022,但umask值只是个掩码,它会屏蔽掉不想授予该安全级别的权限
对于文件来说,全权限是666,所有用户都有读和写的权限
对于目录来说,全权限是777,所有用户都有读写和执行的权限
所以文件一开始是666,减去umask值022后,剩下的文件权限就变成了644。
在大多数的Linux的发行版中,umask值通常会设置在/etc/profile启动文件中
可以用umask命令为默认umask设置指定一个新值
将umask设置为026后,文件的权限变为640
将umask设置成026后,目录的权限变为751
chmod命令可以用来改变文件和目录的安全性设置
chmod options mode file
mode参数可以使用八进制模式或符号模式进行安全性设置,八进制模式直接使用希望赋予文件的标准3位八进制权限码即可。
而符号模式则更加复杂
[ugoa ]
[+-=]
[rwxXstugo]
第一组符号:u代表用户,g代表组,o代表其他,a代表上述所有
第二组符号:+表示像在现有权限上增加权限,-代表在现有权限上移除权限,=表示将权限设置为后面的值
第三组符号:表示代表作用到设置上的权限
X:如果对象是目录或者它已有执行权限,赋予执行权限。 s:运行时重新设置UID或GID。 t:保留文件或目录。 u:将权限设置为跟属主一样。 g:将权限设置为跟属组一样。 o:将权限设置为跟其他用户一样。
u-x 移除了属主已有的执行权限,ls的 -F 参数可以再具有执行权限的文件名后加一个星号*(这里被移除了)
改变所属关系
chown命令用来改变文件的属主
chgrp命令用来改变文件的默认属组
命令格式如下
chown options owner[.group] file
chown也可以同时改变属主和属组
也可以只改变属组
(注意:只有root用户能改变文件的属主,任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员)
chgrp命令可以改变文件或目录的默认属组
此时用户账户必须是文件的属主,除了能够更换属组之外,还得是新组的成。这是Linux共享文件的一个途径。
共享文件在Linux上的实现方式是创建组
创建新文件时,Linux会用默认的UID和GID给文件分配权限,如果想让其他人也能够访问文件,要么改变其他用户所在组的访问权限,要么就给文件分配一个包含其他用户的新默认组
chmod命令修改SGID或者SUID都可以实现大范围环境中创建文档并将文档与人共享。
SGID位会强制某个目录下创建的新文件或目录都沿用该父目录的属组,而不是创建这些文件的用户的属组。这可以为系统的用户之间共享文件提供一个简便的途径。