SUID
- 作用于二进制可执行程序文件上,用户执行此程序时将继承此程序所有者的权限
- 权限设置的命令为: chmod 4XXX,如下图passwd命令就是在执行的过程中获取到root的权限,去修改/etc/shadow,当然passwd+其他用户是不行的
- 同样的再举个例子,给cat权限加上s权限,则可以访问到/etc/shadow
SGID
- 作用于二进制可执行文件上,用户将继承此程序所属组的权限
- 作用于目录上,此目录中新建的文件的所属组将自动从此目录继承
- 权限设置的命令为:chmod 2XXX
- 存在两个用户guo、g都在一个文件夹下,修改他们的所属组都为m48,登录guo用户在文件夹下创建guo1.txt,登录g用户创建g1.txt,如下图。这样存在的问题就是需要如果guo需要修改g1.txt就需要把g1.txt文件组改为m48,才可以修改。同理,g需要修改guo1.txt也是一样。
- 还有guo或者g创建的文件都默认属于各自的用户和组,这样之后创建的文件就不能给其他用户访问,于是可以通过SGID可以实现,只需要把文件夹g+s就可以实现在目录下创建的文件都为相同的组
STICKY (粘滞位)
- 作用于目录上,此目录下的文件只能由所有者自己来删除(root例外)
- 权限设置命令为: chmod1XXX
- 如下图,/tmp文件夹就属于有粘滞位的文件夹
- 如下图例子,有两个用户,guo和g,分别用这两个用户创建文件guo.txt,g.txt
- 如前面所述,因为/tmp下存在粘滞位,所以/tmp下的文件只能有所有者自己删除,现在尝试用guo的账户去删除g.txt,结果如下图就是权限不够
- 把粘滞位去掉,再做尝试,结果发现是用户guo可以删除g.txt文件