一、SUID(Set owner User ID up on execution)
1.1.作用:
当用户在执行具有SUID权限的文件时,会临时变为该文件的属主的角色
1.2.操作对象:
二进制可执行文件
1.3.设置命令
chmod u+s filename 或者
chmod 4644 filename
1.4.示例:
普通用户可以通过passwd命令修改自己的密码,而passwd命令实际会去修改/etc/shadow文件,但/etc/shadow文件的权限
是000,只有root能够修改它,普通用户不能直接修改,神奇的是通过passwd命令就可以间接地修改,其中的关键就在于SUID权限

passwd命令的权限为

/usr/bin/passwd的属主权限为rws,s表示同时设置了SUID权限和x权限,取消s权限后

可以发现它是有x权限的,也只有给具有x权限的文件设置SUID权限才有意义
去掉SUID权限后,普通用户修改密码就不能成功

总结:当普通用户执行passwd命令时,会临时成为root,因此能够修改/etc/shadow文件,从而可以修改密码
1.5.特别注意:为shell脚本设置SUID是无效的
参考文章:https://blog.youkuaiyun.com/ack92710/article/details/101691245
二、SGID
2.1.作用:
当用户在执行具有SGID权限的文件时,会临时变为该文件的所属组的角色
在具有SGID权限的目录下创建的文件和目录会继承父目录的所属组
2.2.操作对象:
文件和目录
2.3.设置命令
chmod g+s filename 或者
chmod 2755 dirname
2.4.示例:
针对文件设置SGID权限的场景较少,这里不再测试,只测试对目录的设置
用root分别创建两个目录dir1和dir2,并设置属主为alex,所属组为bob,给dir2设置SGID权限
mkdir dir{1,2}
chown alex.bob dir1
chown alex.bob dir2
chmod g+s dir2/
在dir1和dir2分别创建目录test1,查看test1的权限
在dir1和dir2分别创建文件f1.txt,查看f1.txt的权限
总结:在设置了SGID权限的dir2目录下创建的文件和目录会继承dir2所属组的权限,也就是会把所属组设置为bob,并且目录也会设置SGID权限
三、SBIT(粘滞位)
3.1.作用:
阻止非文件的所有者删除文件
3.2.操作对象:
目录
3.3.设置命令
chmod o+t filename 或者
chmod 1757 dirname
3.4.示例:
/tmp目录默认就有t权限

用alex用户在/tmp下创建t1.txt文件,并给其它人添加w权限
切换到bob用户,删除t1.txt
提示操作不允许,这是因为该文件被SBIT权限保护了,只能由其创建者进行删除
去掉/tmp目录的t权限,再用bob用户删除t1.txt,可以删除
总结:SBIT权限可以保护自己创建的文件不被他人删除
本文详细介绍了Linux中的SUID、SGID和SBIT权限。SUID允许普通用户临时获得文件所有者的权限,如passwd命令;SGID使执行者暂时拥有文件所属组的权限,并能影响子文件的组属性;SBIT用于防止非文件所有者删除文件,如在/tmp目录的应用。这些权限在系统安全和权限管理中起到关键作用。
1170

被折叠的 条评论
为什么被折叠?



