Linux系统文档和文件夹的特殊权限 s s t ,使得仅文件所有者可删除和移动文档
一、常规性基础介绍
使用 ls -al file 命令,可以查看到file的全部属性,常规为rwx权限在 user、group、other属性位的值。但除此之外,针对x权限位,还有对应的特殊属性: --s--s--t
suid s(有x权限显示小写)/ S 所属用户对应的权限位
sgid s(有x权限显示小写)/ S 所属组对应的权限位
sticky t(有x权限显示小写)/ T 其他用户对应的权限位
A.所有者(user)的s权限:
称为Set UID,简称为SUID的特殊权限;
限定:只能在设置二进制可执行程序上面,对目录设置无效。
功能:即当执行该文件时,将具有该文件所有者的权限。
设定suid的命令: chmod u+s file #注意,file 为可执行,可运行的二进制文档才真正有效
B.所属组(group) 的s权限:
称为Set GID,简称为SGID的特殊权限;
限定:既可以给二进制可执行程序,也可能以对目录设置。
功能:在设置了SGID权限的文件夹内新建文档时,新建的文档的所属组,将继承该文件夹(具有s属性)的所属组。
设定sgid的命令:chmod 2755 file 或者 chmod g+s file
C.其他用户(other)的t权限:
称为Sticky Bit,简称为SBIT权限。
限定:只针对目录有效。
功能:让文档的所有者(user)及root可以删除(重命名/移动)该文件夹下的文件;即便是该目录具有w权限,但是除了root用户,其他用户只能对自己的文件进行删除、移动操作。
设定sticky的命令:chmod 1777 file 或者 chmod o+t file
二、各功能的设定和测试操作
1.设置测试文档。 这里新建了文件夹test 以及文件夹内的test.file 这个文档,并设定了rwx权限
2. 对文件夹增加 sticky 的t 权限 chmod o+t test
3.对文件增加 suid/sgid 的s权限 chmod u+s test/test.file chmod g+s test/test.file
4. 取消对应的特殊权限。 将上述过程中的+号改成-号即可
5.在没有x权限的情况下增加相应的权限。 可以看到,对应的权限位显示为大写的T和S
三、具体应用举例
3.1 设置一个完全开放的共享文件夹, 所有用户都可以在该文件夹下新建、编辑、删除所有者为自己的账户的文件夹和文档,其他用户则不能删除
mkdir test2
chmod -R 0777 test2
chmnod o+t test2
3.2 设置一个用于组内共享的文件夹,将其用户组更改为caiwu,使得在该文件夹下的所有新建文档,其用户组都是caiwu,则同属于caiwu组的用户,都具有对应的权限.
mkdir test3
chmod -0755 test3
chown :caiwu test3