set_gid - g的特殊权限

set_gid可以用在文件和目录上,它允许文件或目录的属组被修改。

  • 文件:类似于set_uid,普通用户执行的时候临时拥有属组group的权限。

  • 目录:任何用户在这个目录下创建的文件或目录的属组都会与set_gid的目录的属组相同。

语法

增加:

$ chmod g+s file

删除:

$ chmod g-s file

实例

对目录操作:

[root@lwz01 lwz]# chmod g+s 1
[root@lwz01 lwz]# ll
total 0
drwxrwsr-x 3 root lwz  14 Aug 14 11:07 1

[root@lwz01 lwz]# mkdir 1/2
[root@lwz01 lwz]# touch 1/3.txt
[root@lwz01 lwz]# ll 1/
total 0
drwxr-xr-x 2 root root 6 Aug 14 11:07 1
drwxrwsr-x 2 root lwz  6 Aug 24 14:08 2
-rw-rw-r-- 1 root lwz  0 Aug 24 14:08 3.txt

对文件操作:

当前ls命令没有添加gid权限,所以普通用户无法执行

[root@lwz01 lwz]# ll /usr/bin/ls
-rwxr-xr-x. 1 root root 117608 Aug 20  2019 /usr/bin/ls
[root@lwz01 lwz]# su - lwz
Last login: Thu Aug 24 14:00:34 CST 2023 on pts/0
[lwz@lwz01 ~]$ ls /root
ls: cannot open directory /root: Permission denied

加上gid权限后,普通用户可以执行ls命令

[root@lwz01 lwz]# chmod g+s /usr/bin/ls
[root@lwz01 lwz]# ll /usr/bin/ls
-rwxr-sr-x. 1 root root 117608 Aug 20  2019 /usr/bin/ls
[root@lwz01 lwz]# su - lwz
[lwz@lwz01 ~]$ ls /root
1                error.log              openssl-3.0.1.tar.gz  test1                z1.com