1、setGID对文件的作用
- 只有可执行的二进制程序才能设置setGID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行在执行程序的时候,组身份升级为该程序文件的属组
- setUID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
实例:系统中的locate命令就是一个具有setGID权限的文件,locate命令实际搜索的是/var/lib/mlocate/mlocate.db文件中的内容,但如下图所示,该文件其实默认对其他用户是没有权限的,但为什么其他用户能够使用locate命令来搜索呢,原因就在于用户在执行locate命令期间,组身份会升级为slocate组身份,而slocate组对mlocate.db有读权限,所以普通用户可以使用locate命令来查看mlocate.db数据库
2、setGID权限对目录的作用
- 普通用户必须对此目录拥有r和x权限,才能进入此目录
- 普通用户在此目录中的有效组会变成此目录的属组
- 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
实例:
首先用root用户在/tmp目录下创建test目录,然后给test目录777权限,使得普通用户能够进入此目录并且创建文件,然后切换为普通用户(fz),在test目录下创建cangls文件,结果如下:(此时的cangls文件的所属组默认为fz)
\
然后返回root用户,给test目录赋予setGID权限2777,然后切换回普通用户(fz),使用普通用户在test目录下创建bols文件,结果如下:(可见此时创建的bols文件的组身份继承了上级目录test的组身份root)
同setUID权限一样,setGID权限不建议用户自己设置,只要了解下就好了,因为用户自己设置这种权限对于系统来说是很危险的。