SUID SGID SBIT 的作用1
特殊权限位是针对于文件设置的一种特殊的功能,而且与一般权限可同时出现使用,弥补一般权限不能实现的功能:
- SUID
- SGID
- SBIT
SUID
让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
这是一种针对于二进制程序设置的特殊权限,例如所有用户都可以执行用于修改用户密码的passwd命令,而用户密码是被保存在/etc/shadow文件中的,但只要仔细的看下就会发现这个文件的默认权限是000,也就是说除了不受系统限制的root以外的所有用户都没有查看或编辑该文件的权限,所以把passwd命令加上SUID特殊权限位,则可让普通用户临时获得程序所有者的身份,即以root用户的身份将变更的密码信息写入到shadow文件中。
[root@linuxprobe ~]# ls -l /etc/shadow
———-. 1 root root 1004 Jan 3 06:23 /etc/shadow
[root@linuxprobe ~]# ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 29 2014 /bin/passwd
SGID
功能一:让执行者临时拥有属组的权限(对拥有执行权限的二进制程序设置)
这种特殊权限就是参考SUID而设计的,不同点就是让程序的执行者获取的不再是文件所有者的临时权限,而是获取到文件的所有组的权限。
cr–r—– 1 root system 2, 1 Feb 11 2015 kmem
上述实例中,除了root超级用户身份或属于system组成员外的所有用户都没有读取该文件的权限。
功能二:在该目录中创建的文件自动继承此目录的用户组(只可以对目录设置)
正如前面提到过每个文件都有其归属的所有者和所有组,而当我们创建或传送一个文件后,这个文件就会自动的归属于执行这个操作的用户。那么比如我们工作中需要设置一个部门内的共享目录,让所有组内的人都能够读取里面的内容,那么我们就可以创建部门共享目录后,将该目录设置上SGID特殊权限位,这样任何用户在里面创建的任何文件都会归属于本目录的所有组,而不再是自己的基本用户组。
SBIT
SBIT全称Sticky Bit:只可管理自己的数据而不能删除他人文件(仅对目录有效)
SBIT特殊权限位的设置目的和效果是不让其他人删除自己的文件,换句话说就是文件只能被所有者执行删除操作。
- 参考《linux就该这么学》——刘遄. ↩