假设回显信息为 ①-②rws③r-x④r-x ⑤1 ⑥root ⑦root ⑧430540 ⑨Dec 20 18:27 ⑩/usr/sbin/passwd ,现在逐一分析其内容。
①. 首字符-,表示该文件为普通文件。
-,普通文件;
d,目录文件;
l,符号链接;
c,字符设备文件;
b,字节设备文件;
p,先进先出文件;
s,套接字文件。
②. 第2~4个字符,表示所有者(owner)的权限
③. 第5~7个字符,表示所属组(group)的权限
④. 第8~10个字符,表示其他用户(other)的权限
⑤. 第11个字符,表示硬链接数
⑥. 是文件所有者的用户名称(owner)
⑦. 是文件所属组的用户组名称(group)
⑧. 是文件大小,以块为单位,通过 ls -lh 则会以KB,MB作单位
⑨. 是最后修改日期
⑩. 是文件或目录的绝对路径
从上述内容我们可以得知Linux下的权限角色有三种,分别是所有者(owner)、所属组(group)和其他用户(other)。
2. 权限表示形式
[a]. 符号表示法
普通权限:
r,读权限; w,写权限;x,可执行权限。
特殊权限:
SUID权限只能设置在②中,s表示二进制可执行文件同时拥有SUID权限和x可执行权限;S表示二进制可执行文件拥有SUID权限但没有x可执行权限。
SGID权限只能设置在③中,s表示二进制可执行文件或目录同时拥有SGID权限和x可执行权限;S表示二进制可执行文件或目录拥有SGID权限但没有x可执行权限。
SBIT权限只能设置在④中,t表示目录同时拥有SBIT权限和x可执行权限;T表示目录拥有SBIT权限但没有x可执行权限。
[b]. 数字表示法
数字表示法采用二进制形式计算,八进制形式设置的方式。
二进制形式计算,1代表有权限,0代表无权限:
所有者 | 所属组 | 其他用户 | |||||||||
SUID | SGID | SBIT | R | W | X | R | W | X | R | W | X |
1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 |
然后每三位为一组转为八进制,例如现在二进制形式为100111101101,那么转为八进制则为4755。
然后通过 chmod 4755 文件 就可以改变文件的权限, ls -l 回显中权限部分则为rwsr-xr-x。
注意:1. 若不设置特殊权限时,我们可以直接省去八进制的第一位数,例如: chmod 755 文件 ;
2. 采用数字表示法设置特殊权限,仅能启动特殊权限,却无法关闭。例如,文件A拥有特殊权限SUID和SGID,执行 chmod 0755 文件A ,但通过 ls -l 查看权限依然为rwsr-sr-x。