Linux 特殊权限set_uid命令 .作用在所有者上

set_uid的权限意思是让普通用户临时拥有该命令所有者的身份,但前提是这个文件是二进制文件且是可执行文件。

如何授权set_uid权限?

具体语法:

    赋予该特殊权限:chmod u+s 【可执行的二进制文件】

    取消该特殊权限:chmod u-s 【可执行的二进制文件】

示例:

    1、普通用户临时拥有"root"用户所有者身份来查看没有权限的root用户家目录。如图1所示。

图片关键词

图1 set_uid特殊权限设置以及被设置的二进制文件权限改变


可以从图1中看到"/usr/bin/ls"文件所有者权限位中原本的"x"权限位却被"s"代替了,此种权限通常称为SetUID,简称SUID特殊权限,当用户执行拥有此权限的文件时,会以文件所有者的身份去执行该文件,一但文件执行完毕,文件拥有者的身份也随之消失切换回原本身份。

系统中是有一些默认配有这个SUID特殊权限的,比如Linux 系统中所有用户的密码数据都记录在 /etc/shadow 这个文件中,通过查看该文件的权限如图2所示。

图片关键词

图2 /etc/shadow文件权限


如图2所示也就是普通用户对此文件是没有任何权限的,那为什么普通用户可以使用 passwd 命令修改自己的密码呢?那是因为"passwd"的文件拥有SUID特殊权限,如图3所示。

图片关键词

图3 passwd系统默认拥有SUID特殊权限


2、取消SUID特使权限

在上面我们已经给"ls"设置了SUID特殊权限,现在我们给他取消,如图4所示

图片关键词

图4 如何取消SUID特殊权限"chmod u-s"


SUID特殊权限设置不当的话,会给linux系统造成重大安全隐患,所以如没什么特殊需求,尽量不要自己增加SUID特殊权限。