特殊位与权限
目录:
1. SUID
2. SGID
3. SBIT
4. 文件系统属性chattr权限
5. 管理员权限sudo
1. SUID
1.1 什么是SUID
SUID只对二进制可执行文件才有效(文件必须具备x权限)
执行者对该程序有 x 权限
当前程序拥有SUID时,该程序执行者在程序执行期间会暂时获得该程序属主身份
执行者所获得的权限只在该程序运行时有效
1.2 为什么需要SUID
passwd文件具备SUID
可以看到拥有者权限是rws
这代表在执行该程序时,执行者会获得拥有者的权限(拥有者是root)
为什么要这样设置权限呢,因为passwd实际上会去修改/etc/shadow的内容,但是这个文件只允许管理员修改
但是用户有修改密码这个需求,所以我们在用户执行该程序时暂时赋予用户管理员权限,便于用户修改密码,在程序执行结束后收回权限
1.3 如何设置SUID
chmod u+s 文件名
u代表设置的是SUID
chmod 4755 文件名
第一个数字 4 代表 SUID,后面分别代表:
2.拥有者
3.所属组
4.其他人
1.4 如何移除SUID
chmod u-s 文件名
SUID已经被移除
chmod 755 文件名
该方法效果与上面相同
2. SGID
1.1 什么是SGID
SGID可以设置目录与可执行文件,命令的执行者需要拥有对文件的x权限,也就是可执行权限
在程序执行过程中,组身份升级为该程序的所属组
所获得的权限只在程序执行的过程中有效
1.2 为什么需要SGID
我们先安装locate,用于进行测试
查看locate命令
通过观察我们发现,所属组部分有个s,这个s即代表开启了SGID
在执行该命令时,会在执行期间将组身份升级为该文件的所属组
locate命令需要使用mlocate.db文件,但是默认情况下普通用户是没有权限阅读的,当用户运行locate命令时,组身份升级为了该文件的所属组,所以具有的相对的权限进行阅读
1.3 如何设置SGID
chmod g+s 文件或目录名
chmod 2777 文件或目录名
第一个数字 2 代表 SGID,后面分别代表:
2.拥有者
3.所属组
4.其他人
在设置了SGID的目录中,创建文件,默认的所属组变成了目录的所属组
3. SBIT
1.1 什么是SBIT
SBIT粘着位权限
SBIT权限只能针对目录有效
没有SBIT权限,拥有该文件w权限的用户可以删除该文件
拥有SBIT权限,只有该文件的拥有者和管理员用户才能删除
1.2 设置SBIT
chmod o+t 目录名
c
chmod 1777 目录名
第一个数字 1 代表 SBIT,后面分别代表:
2.拥有者
3.所属组
4.其他人