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_gid和set_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.txt把set_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权限作用在目录上的时候,创建子目录或者文件的时候,所创建的子目录或者子文件的所属组和该目录的所属组保持一致。