Linux:文件的特殊权限

单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUIDSGIDSBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

例如,所有用户都可以执行passwd命令来修改自己的用户密码,而用户密码保存在/etc/shadow文件中。仔细查看这个文件就会发现它的默认权限是000,也就是说除了root管理员以外,所有用户都没有查看或编辑该文件的权限。

查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。那么如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S

Linux:文件的特殊权限

 

 SGID主要实现如下两种功能:
Ø执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
Ø某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
第一种情况如下:

在早期的Linux系统中,/dev/kmem是一个字符设备文件,用于存储内核程序要访问的数据,权限为:

Linux:文件的特殊权限

为了能够获取到进程的状态信息,可在用于查看系统进程状态的ps命令文件上增加SGID特殊权限位。查看ps命令文件的属性信息:

Linux:文件的特殊权限

第二种情况:

如果现在需要在一个部门内设置共享目录,让部门内的所有人员都能够读取目录中的内容,那么就可以创建部门共享目录后,在该目录上设置SGID特殊权限位。这样,部门内的任何人员在里面创建的任何文件都会归属于该目录的所属组,而不再是自己的基本用户组此时,我们用到的就是SGID的第二个功能,即在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。

Linux:文件的特殊权限

Linux:文件的特殊权限

 

 SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。

Linux:文件的特殊权限

Linux:文件的特殊权限