SetGID针对文件
1. 只有可执行文件才能设置SGID权限
2. 命令执行者要对该文件拥有x权限
3. 命令在执行时,组身份升级为该文件的所属组
4. SetGID权限与SetUID一样,只在文件(程序)执行过程中有效
举例mlocate 命令
mlocate命令通过查找/var/lib/mlocate/mlocate.db文件中的缓存数据来查找文件位置,但是可以看出,/var/lib/mlocate/mlocate.db文件的other权限是---,普通用户没有rwx权限
bl@ubuntumma:~$ ls -l /usr/bin/mlocate -rwxr-sr-x 1 root mlocate 39520 Jun 20 2013 /usr/bin/mlocate |
bl@ubuntumma:~$ ls -l /var/lib/mlocate/mlocate.db -rw-r----- 1 root mlocate 1889860 Aug 26 06:34 /var/lib/mlocate/mlocate.db |
普通用户bl执行mlocate时,会得到mlocate文件的组权限,也就是说bl临时变成了mlocate文件所属组(mlocate组)的成员,而/var/lib/mlocate/mlocate.db文件的所属组也是mlocate组,并且/var/lib/mlocate/mlocate.db组权限是r--,也就是mlocate组的成员都可以查看/var/lib/mlocate/mlocate.db文件。这样,普通用户bl就可以通过mlocate命令查看/var/lib/mlocate/mlocate.db文件鸟。
SetGID针对目录
1. 普通用户bl需要拥有目录 testDir/的rx权限
2. bl在testDir/中的有效组会变成testDir/目录的所属组(testGroup)
3. bl在testDir/中新建文件的默认组都会属于testGroup,而不是bl的所属组
SetGID基本没鸟用,不用,不用
设置SetGID
2代表SGID
chmod 2755 文件名
chmod g+s 文件名