特殊权限set_gid

这个set_gid与set_uid是很相似的,只不过“set_uid”是作用在所有者,而“set_gid”是作用在所属组。

语法:chmod g+s      ,取消“set_gid”权限语法:chmod g-s。而拥有“set_gid”权限的它背景颜色则是黄色,且所属组权限位有“s”权限,如下图:

image.png

看到了所属组的权限改变后再联想到“set_uid”的作用,也就知道“set_gid”的作用了,它的作用就是让普通用户在执行拥有“set_gid”权限命令瞬间回赋予普通用户临时拥有所属组的权限。

加上“set_gid”后,普通用户能不能看root家目录呢?如下图:

image.png

也是可以查看的,为什么可以查看呢?来看看/root/这个目录对所属组的权限是有读的权限与可执行,所以设置了“set_gid”后普通用户执行后,临时拥有了所属组的权限,我们可以看看“root”用户的家目录权限,如下图:

image.png

可以看到“root”用户家目录的所有组权限是“r-x”(可读不可写可执行),而“set_gid”的作用是赋予普通用户临时拥有所属组的权限,所以普通用户能够查看到root家目录。

当然“set_gid”不仅仅可以作用在文件上,它还可以作用在目录上,我们不妨做一次实验,创建一个“234”目录,并给予“set_gid”权限,如下图:

image.png

对了,这时候对比还不是很明显,首先把234目录的所属组修改一下吧,修改成xunnet,如下图:

image.png

现在234目录的所有者是“root”,所属组是“xunnet”,我们在234目录下去创建一个文件如下图:

image.png

在查看“234”目录详细信息时有没有发现一个情况呢?刚刚创建的子文件所属组也是"xunnet",那是不是目录也是这样呢?我们创建一个子目录看看,如下图:

image.png

是不是有点奇怪?在“root”用户创建的子文件或子目录所有者与所属组一般不都是root的吗?怎么现在所创建的子文件与子目录的所属组却不是“root”的呢?我们先把234这个目录的“set_gid”权限取消再创建子文件与子目录看看,如下图:

image.png

取消“set_gid”权限之后root用户创建的子文件或子目录的所属组正常,这是系统正常的前提下,root用户所创建的文件或目录当然它们的所有者或所属组都是“root”,但当在某个目录设置了“set_gid”后,再在这个目录下创建子文件或子目录时,这个子文件或子目录的所属组会跟着父级目录的所属组保持一致,也就是说创建“set_gid”权限的这个目录的所属组保持一致。可以看看上图,“234”目录的所属组是“xunnet”,那么当“234”目录设置了“set_gid”后,在234目录下所创建的子文件或子目录的所属组与父级目录“234”的所属组保持一致,同样也是“xunnet”。

我们来总结一下:“set_gid”这个权限不仅可以对文件有作用,且对目录也有作用,当作用在文件上时与“set_uid”作用是类似的,它可以让执行这个文件的普通用户临时拥有所属组权限,当作用在目录上的时候,所创建的子文件或子目录的所属组与父级目录的所属组保持一致。

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

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

发表评论

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