特殊权限set_uid


set_uid

设置在目录上无意义

语法:chmod u+s      ,取消“set_uid”权限语法:chmod u-s。而拥有“set_uid”权限的它背景颜色则是红色色,且所有者权限位有“s”权限,如下图:

image.png

如上图,我们使用ls -l 查看了密码保存文件passwd的权限是什么,这时发现后边的文件出现了红色,然后在权限位那边看到rwsr-xr-x。我们都学过了权限位都知道r可读w可写x可执行。那么这个s我们还是第一次见,又是什么意思呢?这里有一个概念set_uid。这个s就是set_uid的权限,这个权限有什么作用呢?我们想一想,在windows系统上你是一个普通用户,那这个普通用户能不能给自己修改自己的密码呢?答案是当然可以,如果都让管理员去修改密码,那管理员有多累?所以在linux下passwd这个命令也是支持普通用户修改自己的密码,但这样又有一个矛盾,linux是很安全的,修改密码也就意味着要去修改密码文件,那密码保存文件是/etc/shadow。我们先看看这个文件的权限,如下图:

image.png

该文件连root用户都没权限,但是root毕竟是超级管理员用户,是有至高无上的权限,即使是这样000的权限它也能去修改这个文件,但是在普通用户就不行了,普通用户没权限就没权限,但又想让普通用户能够修改自己的密码,而密码文件又不能让他有权限,这就是矛盾所在。为了解决这个矛盾,linux给出了一个特殊权限set_uid,也就是刚刚看到的“s”权限。这个权限可以让普通用户在执行set_uid命令时,在执行的那一瞬间被临时拥有root用户权限。总结一下set_uid作用:保证普通用户临时拥有该命令所有者的身份,给一个文件设置set_uid的前提是这个文件是一个二进制且可执行的文件。这样的权限并不多,在系统中也就只有/usr/bin/passwd 的这个命令有set_uid权限。那怎样给一个文件授权一个set_uid的权限呢?比如给ls -l 授权set_uid,先看看我们普通用户查看一下root的家目录,如下图:

image.png

那这个授权命令怎么写呢?其实也就是权限的命令chmod,语法:chmod u+s如下图:

image.png

现在再来看看普通用户是否可以使用“ls”命令来查看root家目录,如下图:

image.png

这就是拥有set_uid权限的ls命令。当普通用户“xunnet”执行这“ls”命令瞬间,拥有set_uid权限的“ls”则临时赋予普通用户“xunnet”拥有所有者的权限,这个所有者就是“root”用户。

那怎么去掉set_uid的权限呢?如下图:

image.png

这回我们在看普通用户“xunnet”是否还能查看,如下图:

image.png

这就是set_uid的作用,那这样写行不行呢?chmod u=rws /usr/bin/ls 来看看,如下图:

image.png

看着貌似可以,但有没有发现“ls”的权限变成了大写“S”了?这是为什么呢?虽然也有“s”权限,但少了一个“x”权限,所以变成了大写“S”,如果没有“x”权限它就是大写“S”,那怎么办呢?给他加上“x”权限就可以解决,如图:

image.png

这就可以了,看看普通用户还能不能执行“ls”查看root家目录,如下图:

image.png


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.gzievs.net.cn/post/46.html

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。