SetGID
和SUID有一点不同,它可以针对文件或者目录使用
针对文件使用的时候
1 只有可执行的二进制程序才能设置SGID权限
2 命令执行者要对该程序拥有x权限
3 命令执行在执行程序的时候,组身份升级为该程序文件的属组
4 SGID权限同样只在该程序的执行过程中有效,也就是说身份改变只在程序执行过程中有效
例如locate命令
whereis locate
ll /usr/bin/locate 快速查找命令,发现权限多了一个s,这条命令其实是有SGID权限的,要来访问这个文件,达到快速查找到的目的
ll /var/lib/mlocate/mlocate.db 你会发现权限是640,一般来说普通用户不具有对这个文件的访问权限,但是能访问就是因为locate有SGID
针对目录的时候
1 普通用户必须对此目录拥有rx权限,才可以进入该目录
2 普通用户在此目录中的有效组会变成此目录的属组
3 如果普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
mkdir /tmp/test
chmod 2755 /tmpp/test/ 或者chmod g+s /tmpp/test/
ll -d /tmpp/test/ 就可以见到组权限有s
su - ruifengzeng
pwd
touch abc
ll
cd /tmpp/test/
ll 普通用户在这个目录新建目录的所属组就不是普通用户的组,而是上面新建test的组
和SUID有一点不同,它可以针对文件或者目录使用
针对文件使用的时候
1 只有可执行的二进制程序才能设置SGID权限
2 命令执行者要对该程序拥有x权限
3 命令执行在执行程序的时候,组身份升级为该程序文件的属组
4 SGID权限同样只在该程序的执行过程中有效,也就是说身份改变只在程序执行过程中有效
例如locate命令
whereis locate
ll /usr/bin/locate 快速查找命令,发现权限多了一个s,这条命令其实是有SGID权限的,要来访问这个文件,达到快速查找到的目的
ll /var/lib/mlocate/mlocate.db 你会发现权限是640,一般来说普通用户不具有对这个文件的访问权限,但是能访问就是因为locate有SGID
针对目录的时候
1 普通用户必须对此目录拥有rx权限,才可以进入该目录
2 普通用户在此目录中的有效组会变成此目录的属组
3 如果普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
mkdir /tmp/test
chmod 2755 /tmpp/test/ 或者chmod g+s /tmpp/test/
ll -d /tmpp/test/ 就可以见到组权限有s
su - ruifengzeng
pwd
touch abc
ll
cd /tmpp/test/
ll 普通用户在这个目录新建目录的所属组就不是普通用户的组,而是上面新建test的组