特殊权限s

Linux中可以使用ls -l命令查看一个文件的全部权限。

权限一般分为三类,即rwx,分别表示着读权限、写权限、执行权限。

但对于某些文件,却存在一种特殊的权限——s

s权限示例

例如/usr/bin/passwd

passwd文件的权限

该文件是passwd命令的二进制文件。


我们知道,使用passwd 用户名可以给某个用户重新设置密码,而密码最终会保存到/etc/shadow文件中。

对于/etc/shadow,我们查看其权限:

shadow文件的权限

明显,只有root用户具有w——写权限。普通用户如果想写这个文件是不被允许的。然而在实际情况中,普通用户也可以通过passwd命令来修改自己的代码。

其主要原因就在于这个s权限。

s权限说明

s权限出现在x权限的位置,但依据用户、所属组、其他人,又可分为三处,即--s--s--t,分别称为SUID、SGID、SBIT。

我们先讨论第一处出现s的作用(即SUID)。

这一位置起初代表着用户的可执行权限,在如上/usr/bin/passwd的权限截图中,代表root的可执行权限。

而从图上可以看出,普通用户对于/usr/bin/passwd也具有可执行权限。

那么,普通用户执行该文件时,由于s权限的作用,就会暂时处于s权限所属者的位置(即root用户的位置),所以也就对/etc/shadow文件具有了写权限。

说明:我们这里仅讨论了s权限作用于二进制文件并且是SUID时的作用。但实际上,s权限还可以用于目录,而且也可以作为SGID、SBIT出现。作用效果类似,但稍有不同,这里先不讨论。

你可能感兴趣的:(特殊权限s)