转载自《鸟哥的Linux私房菜》第七章、Linux 文件与目录管理
当s标志在文件拥有者的x项目中为SUID特殊权限,那s在群组的x时则称为Set GID。举例来说,你可以用底下的命令来观察具有SGID权限的文件:
ubuntu中观察/usr/bin/locate文件一直跟踪到/usr/bin/mlocate才是真正的二进制可执行程序:

centos观察/usr/bin/locate文件:
![]()
与SUID不同的是,SGID可以针对文件或目录来配置!如果是对文件来说,SGID有如下的功能:
| SGID对二进位程序有用; |
| 程序运行者对于该程序来说,需要具备x的权限; |
| 运行者在运行的过程中将会获得该程序群组(Group)的权限支持! |
ubuntu:

centos:已经没有mlocate.db了

与SUID非常的类似,档以vbird这个账号去运行mlocate或locate运行档时(作为others,具有x权限),那vbird将会取得slocate群组的权限,因此就能去读取mlocate.db文件了。
除了binary program之外,事实上SGID也能用在目录上,这也是非常常见的一种用途!当一个目录配置了SGID的权限后,它将具有如下的功能:
| 1、使用者若对于此目录具有r和x的权限时,该使用者能够进入此目录(x权限自然就是使用者能进入此目录啦); |
| 2、使用者在此目录下的有效群组(effective group)将会变成该目录所在的群组;(可以理解为使用者执行其x权限进入此目录后将具有目录所在群组的权限,相当于此时使用者的有效群组变成目录所在群组); |
| 3、用途:若使用者在此目录下具有w的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同(以目录的群组的权限在目录下新建文件,则新文件的群组与目录的群组相同)。 |
首先确定/srv/ahome目录的需求:要求该目录只允许同在project组的alex与arod去rwx,就以root用户来建立该目录(或者在alex与arod中选一个作project群组的老大来全权管理该目录),那该目录的权限首先得是drwxrwx--- root project /srv/ahome,此时alex与arod都可以进入/srv/ahome目录增(自己新建)删查文件,但alex在目录中建立的文件的权限将是-rw-rw-r-- alex alex <filename>,arod在目录中建立的文件的权限将是-rw-rw-r-- arod arod <filename>,二者建立的文件只能相互读、删除(具有目录群组prject的w权限)而不能写(增删改)。为此要将目录额外增加SGID权限:drwxrws--- root project /srv/ahome,如此alex与arod各自执行x权限进入/srv/ahome目录后便具有目录所属群组project的rwx权限,从而可以相互写(增删改)对方的文件,这才是该建立该目录的初衷诉求。
本文深入解析SGID权限在Linux系统中的应用,包括对二进制程序及目录的配置方法,以及如何利用SGID实现文件权限的精细化管理,特别强调了在多用户环境下,通过设置SGID来控制文件创建和群组权限的重要性。
1181

被折叠的 条评论
为什么被折叠?



