setuid,setgid,sticky三者区别
setuid位, 如果该位为1, 则表示设置setuid 4
setgid位, 如果该位为1, 则表示设置setgid 2
sticky位, 如果该位为1, 则表示设置sticky 1
1.setuid的作用
jack用户执行命令passwd jack;修改自己的密码成功,修改密码其实就是修改/etc/passwd这个文件,查看/etc/passwd这个文件的权限;发现其他人没有写权限,但是passwd jack执行成功,其原因就在于passwd这个命令的权限是rwsrw----,其中's'的作用就是:让执行命令的人具有和该命令拥有者相同的权限
注:当原来权限有x时,再给文件设置setuid,此时x位变为小写的s,当没有x权限时,此时x位变为S.
操作方法
chmod u+s xxx
chmod 4765 xxx
2.setgid的作用
当用户以root身份登录系统并创建一个目录dir时,此时目录所有者和所属组是root,root;切换到另外一个用户jack,进入dir目录并创建文件,此时创建的文件所属者所属组都是jack,jack;当想要在dir目录创建的所有文件的所属组都是root时,可以以root身份登录给dir目录,执行命令chmod g+s dir或者chmod 2765,之后任何用户登录系统在目录dir中创建的文件的所属组默认都是root.
总结: 目录有s权限, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组
3.sticky bid的作用
应用场景:超级管理员创建了两用户a,b;超级管理员创建了一个目录dir,a用户登录系统在dir目录中创建文件a.txt;b用户登录系统创建文件b.txt,现在需要a不能删除b创建的文件即使b.txt(即使文件other为w),同理b也是如此.
(正常情况下a用户和b用户是可以删除对方创建的文件)
要想做到a用户可以添加文件并且只能删除自己创建的文件,b用户也如此
可以执行命令 chmod o+t dir 或者 chmod 1765 dir
给目录t设置stichy bit位