3.文件管理
3.3.3 SUID、SGID、SBIT
1.SUID
(1)SUID
l SUID 权限仅对二进制程序(binary program)有效;
l 执行者对于该程序需要具有 x 的可执行权限;
l 本权限仅在执行该程序的过程中有效 (run-time);
l 执行者将具有该程序拥有者 (owner) 的权限。
(2)无SUID的效果
[root@localhost tmp]# ll aaa
-rw-r-----. 1 root root 10 Mar 13 21:42 aaa
[root@localhost tmp]# su - calf
Last login: Fri Mar 13 21:26:08 CST 2020 on pts/0
[calf@localhost ~]$ cd /tmp/
[calf@localhost tmp]$ cat aaa
cat: aaa: Permission denied
#注:注意账号切换
(3)设置SUID
[root@localhost ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 54048 Jan 25 2014 /bin/cat
[root@localhost ~]# chmod 4755 /bin/cat
[root@localhost ~]# ll /bin/cat
-rwsr-xr-x. 1 root root 54048 Jan 25 2014 /bin/cat
注:设置SUID的另外一种方法:
[root@localhost tmp]# chmod u+s /bin/cat
(4)设置SUID后的效果
[root@localhost ~]# su - calf
Last login: Fri Mar 13 22:01:39 CST 2020 on pts/0
[calf@localhost ~]$ cd /tmp/
[calf@localhost tmp]$ cat aaa
aaaa
bbbb
#注:注意账号切换
(5)S与s的区别
[root@localhost tmp]# chmod u-x /bin/cat
[root@localhost tmp]# ll /bin/cat
-rwSr-xr-x. 1 root root 54048 Jan 25 2014 /bin/cat
#注:1.S表示文件拥有者无x权限,s表示文件拥有者有x权限。
2.命令执行者必须具有x权限,不受文件拥有者是否有x权限的影响。
2.SGID
(1)SGID对文件的效果
l SGID 对二进制程序有用;
l 程序执行者对于该程序来说,需具备 x 的权限;
l 执行者在执行的过程中将会获得该程序群组的支持!
#注:效果和SUID一样,只是SUID是获得拥有者的权限,而SGID是获得群组的权限。
(2)SGID对目录的效果
l 用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;
l 用户在此目录下的有效群组(effective group)将会变成该目录的群组;
l 若用户在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
(3)SGID对目录效果测试
[root@localhost tmp]# mkdir dir
[root@localhost tmp]# chmod 2777 dir
#设置SGID,同时开通满权限
[root@localhost tmp]# ll -d dir/
drwxrwsrwx. 2 root root 17 Mar 13 22:20 dir/
#注:其他用户需要有写权限
[root@localhost tmp]# touch dir/root
#root账号创建了文件root
[root@localhost tmp]# su - calf
Last login: Fri Mar 13 22:05:04 CST 2020 on pts/0
[calf@localhost ~]$ touch /tmp/dir/calf
#calf账号创建了文件calf
[root@localhost tmp]# ll dir
total 0
-rw-rw-r--. 1 calf root 0 Mar 13 22:26 calf
-rw-r--r--. 1 root root 0 Mar 13 22:20 root
#注:不同用户创建的文件都属于root组,即父目录dir所属的组。
(4)s与S的含义
[root@localhost tmp]# chmod g-x dir/
[root@localhost tmp]# ll -d dir/
drwxrwSrwx. 2 root root 41 Mar 13 22:30 dir
#注:1.S表示同组用户无x权限,s表示同组用户有x权限。
2.文件的创建者必须对该目录有w权限,与同组用户是否具有w权限无关。
3.SBIT
(1)SBIT的效果
l 当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;
l 当用户在该目录下建立档案或目录时,仅有自己与 root 才有权力删除该档案。
(2)设置SBIT
[root@localhost tmp]# mkdir dir
[root@localhost tmp]# chmod 1777 dir
[root@localhost tmp]# ll -d dir
drwxrwxrwt. 2 root root 6 Mar 13 22:47 dir
#注:只加SBIT的命令也可以写成:chmod o+t dir
(3)准备环境
[root@localhost tmp]# su - calf #切换到calf
Last login: Fri Mar 13 22:37:37 CST 2020 on pts/0
[calf@localhost ~]$ touch /tmp/dir/calf{1,2,3} #创建3个文件
[root@localhost tmp]# su - stu #切换到stu
Last login: Thu Mar 5 10:56:32 CST 2020 on pts/2
[stu@localhost ~]$ touch /tmp/dir/stu{1,2,3} #创建3个文件
[root@localhost tmp]# ll dir
total 0
-rw-rw-r--. 1 calf calf 0 Mar 13 22:50 calf1
-rw-rw-r--. 1 calf calf 0 Mar 13 22:50 calf2
-rw-rw-r--. 1 calf calf 0 Mar 13 22:50 calf3
-rw-rw-r--. 1 stu stu 0 Mar 13 22:51 stu1
-rw-rw-r--. 1 stu stu 0 Mar 13 22:51 stu2
-rw-rw-r--. 1 stu stu 0 Mar 13 22:51 stu3
(4)测试删除
[calf@localhost ~]$ cd /tmp/dir/
[calf@localhost dir]$ ls
calf1 calf2 calf3 stu1 stu2 stu3
[calf@localhost dir]$ rm -f calf1 #测试删除文件
[calf@localhost dir]$ ls
calf2 calf3 stu1 stu2 stu3 #文件确实被删除
[calf@localhost dir]$ rm -f stu1
rm: cannot remove ‘stu1’: Operation not permitted
#但不能删除别人的文件
#注:用户对目录具有w权限,即可删除该目录下的文件。但此例中,用户只能删除拥有者是自己的文件,不能删除拥有者是其他用户的文件。这就是SBIT的效果。
(5)T和t的区别
[root@localhost tmp]# chmod o-x dir/
[root@localhost tmp]# ll -d dir
drwxrwxrwT. 2 root root 63 Mar 13 22:54 dir
#注:1.T表示其他用户不具有x权限,t表示其他用户具有x权限。
2.操作者需要对目录具有w权限。
标签:tmp,SUID,dir,calf,SBIT,SGID,权限,root,localhost
来源: https://blog.51cto.com/5482173/2490162