本文介绍Linux文件权限,其中包含特殊字符S和s权限操作
一、Linux文件基础权限介绍
在Linux中一个文件权限用十位编码表示:
其中第1位表示文件类型:d表示为文件夹(目录),-表示文件
第2~4位表示文件拥有者权限,编码为u
第5~7位表示用户组权限,编码为g
第8~10位表示其他用户权限,编码为o
此外文件权限又以3位二进制编码为一组来限制用户操作文件/文件夹的权限:
7:读+写+执行,rwx
6:读+写,rw
5:读+执行,rx
4:读,r
3:写+执行,wx
2:写,w
1:执行,x
0:无任何权限
1.1 基础权限操作命令介绍
使用命令chmod 744 test.txt就表示设置文件拥有者可以对test.txt文件进行读写执行操作;设置用户组可以对test.txt文件进行读操作;设置其他用户可以对test.txt文件进行读操作
同样我们也可以使用命令chmod u=rwx,g=r,o=r test1.txt来实现chmod 744 test1.txt命令相同的效果
注意:由于读r写w执行x占据的位置具有唯一性,在执行chmod u,g,o 命令时不要写u=r–,g=-w-,o=rw-等带-操作,直接写u=r,g=w,o=rw即可
例如:执行chmod u=r–,g=-w-,o=rw- test1.txt我们会发现g组并不是写w权限,而是—无任何权限
反之我们执行chmod u=r,g=w,o=rw test1.txt 则为正确操作
二、Linux文件特殊权限介绍
在Linux文件权限中还存在两个特殊的字符S和s,它们代表特殊权限,没有对应的二进制(数字)表示,我们只能通过字符来设置,其中s与x位置相同,均在一组3位编码的最后一位
2.1 特殊权限操作命令介绍
执行命令chmod u=rws test2.txt,可以给u(文件拥有者)设置r(读)、w(写)和S权限
我们发现S是大写的,这是因为我们没有给u文件拥有者设置执行x(执行)权限
先后执行命令chmod u=rwx test3.txt、chmod u=u+s test3.txt,可以给u(文件拥有者)设置r(读)、w(写)、x(执行)和S权限
注意:这里操作不能反过来,即不能先执行chmod u=rws test4.txt再执行chmod u=u+x test4.txt |
否则x(执行)权限会覆盖S权限,当然此即为解除S权限操作
当然两条执行命令可以合并,且合并命令x和S无需分先后
执行命令chmod u=rwx+s test5.txt或者chmod u=rws+x test6.txt,即可给u(文件拥有者)设置r(读)、w(写)、x(执行)和S权限
以此类推,其他两个组(g,o)也为同样操作
2.2 解除S权限操作
若要解除S权限,只需要使用x权限覆盖即可,在此使用u举例,执行命令chmod u=u+x test6.txt
以此类推,其他两个组(g,o)也为同样操作