Linux第二周学习笔记(13)


2.19 特殊权限set_gid

特殊权限set_gid:这个权限可以作用在二进制可执行文件上,还可以作用在目录上。特殊权限set_gid权限位是作用在组权限位上,目录被设置set_gid权限后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组

-----------------------------------------------------------------------------------------------

[root@daizhihong01 ~]# chmod g+s /usr/bin/ls

[root@daizhihong01 ~]# ls -l /usr/bin/ls

-rwxr-sr-x. 1 root root 117656 11  6 2016 /usr/bin/ls

加入set_gid权限以后在组的权限位多了一个小“s” -rwxr-sr-x./usr/bin/ls文件变成了×××,set_gidset_uid在文件上的时候功能上十分相像的,区别主要在于更换了角色,set_uid是让普通用户临时拥有了所有者的身份,set_gid是普通用户临时拥有所属组的身份。

----------------------------------------------------------------------------------------------

set_gid权限作用在文件上(/usr/bin/ls):

加入set_gid权限以后查看普通用户是否能够查看/root/目录的权限:

Root用户下给/usr/bin/ls文件添加set_gid权限:

[root@daizhihong01 ~]# chmod g+s /usr/bin/ls

[root@daizhihong01 ~]# ls -l /usr/bin/ls

-rwxr-sr-x. 1 root root 117656 11  6 2016 /usr/bin/ls

在普通用户下是否能够查看/root/目录:

[yngndzh1@daizhihong01 ~]$ ls -l /root/

总用量 12

-rwx------  1 root root    0 1  30 20:53 123.txt

-rw-------. 1 root root 1418 1  22 08:19 anaconda-ks.cfg

-rw-r--r--  1 root root 4358 1  29 23:24 anaconda-ks.cfg.1

[yngndzh1@daizhihong01 ~]$ ls -ld /root/

dr-xr-x---. 3 root root 203 1  30 20:53 /root/

加入set_gid权限以后是可以查看/root/目录的,因为/root/这个目录对于root组来讲也是拥有r-x权限也就是读和打开的权限,所以设置了set_gid权限以后是能够查看/root/目录。

-----------------------------------------------------------------------------------------------

set_gid权限作用在目录上:

[root@daizhihong01 tmp]# ls -l

总用量 12

drwxr-xr-x  3 root     root   35 2   1 23:29 001

drwxr-xr-x  2 root     root    6 2   3 15:25 002

-rw-r--r--  1 root     root   14 2   1 23:37 123456.txt

-rw-r--r--  1 root     root    0 2   1 22:09 123.txt

-rw-r--r--  1 root     root   65 2   1 23:03 12.txtset_gid权限添加set_gid权限到002目录:

[root@daizhihong01 tmp]# chmod g+s 002

[root@daizhihong01 tmp]# ls -l

总用量 12

drwxr-xr-x  3 root     root   35 2   1 23:29 001

drwxr-sr-x  2 root     root    6 2   3 15:25 002

-rw-r--r--  1 root     root   14 2   1 23:37 123456.txt

-rw-r--r--  1 root     root    0 2   1 22:09 123.txt

-rw-r--r--  1 root     root   65 2   1 23:03 12.txt

更改002目录的所属组:

[root@daizhihong01 tmp]# ls -l

总用量 12

drwxr-xr-x  3 root     root   35 2   1 23:29 001

drwxr-sr-x  2 root     user    6 2   3 15:25 002

-rw-r--r--  1 root     root   14 2   1 23:37 123456.txt

-rw-r--r--  1 root     root    0 2   1 22:09 123.txt

-rw-r--r--  1 root     root   65 2   1 23:03 12.txt

002目录下创建一个文件:

[root@daizhihong01 tmp]# touch 002/daizhihong

[root@daizhihong01 tmp]# ls -l 002/

总用量 0

-rw-r--r-- 1 root user 0 2   3 15:40 daizhihong

创建/daizhihong/ 文件后所属组也是user用户组了,

创建一个子目录看看用户组是否是user用户组:

[root@daizhihong01 tmp]# mkdir 002/yngndzh

[root@daizhihong01 tmp]# ls -l 002/

总用量 0

-rw-r--r-- 1 root user 0 2   3 15:40 daizhihong

drwxr-sr-x 2 root user 6 2   3 15:44 yngndzh

可以看到创建的子目录/yngndzh/用户组也是user用户组,并且drwxr-sr-x组权限位也自动加上了set_gid权限。

去掉set_gid权限再来查看是用户组是否还是user用户组:

[root@daizhihong01 tmp]# chmod g-s 002

[root@daizhihong01 tmp]# ls -l

总用量 12

drwxr-xr-x  3 root     root   35 2   1 23:29 001

drwxr-xr-x  3 root     user   39 2   3 15:44 002

-rw-r--r--  1 root     root   14 2   1 23:37 123456.txt

-rw-r--r--  1 root     root    0 2   1 22:09 123.txt

-rw-r--r--  1 root     root   65 2   1 23:03 12.txt

[root@daizhihong01 tmp]# touch 002/daizhihong123

[root@daizhihong01 tmp]# ls -l 002

总用量 0

-rw-r--r-- 1 root user 0 2   3 15:40 daizhihong

-rw-r--r-- 1 root root 0 2   3 15:51 daizhihong123

drwxr-sr-x 2 root user 6 2   3 15:44 yngndzh

[root@daizhihong01 tmp]# ls -l 002

总用量 0

-rw-r--r-- 1 root user 0 2   3 15:40 daizhihong

-rw-r--r-- 1 root root 0 2   3 15:51 daizhihong123

drwxr-sr-x 2 root user 6 2   3 15:44 yngndzh

drwxr-xr-x 2 root root 6 2   3 15:54 yngndzh123

此时新建的文件/daizhihong123/用户组的权限变成了root,创建/yngndzh23/目录用户组的权限也是变成了root

由此可见给一个目录设置了set_gid权限以后,在这个目录下面创建子文件或者子目录的所属组会跟着这个父级目录保持一致。

set_gid权限:不单单可以作用在文件上也可以作用在目录上,当set_gid权限作用在文件上时和set_uid权限十分相似,set_gid权限可以让普通用户临时拥有所属组的身份。

set_gid权限作用在目录上的时候,创建子目录或者文件的时候,所创建的子目录或者子文件的所属组和该目录的所属组保持一致。