一、SUID
文件的属主/所有者的权限位的执行权限位s,该文件就拥有了特殊权限SUID。
当一个文件设置了SUID后,某个用户执行这个文件时其实是以文件所有者(属主)的身份来运行。暂时切换身份。
[root@Rainbow bin]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33600 4月 7 2020 /usr/bin/passwd
# 用户执行passwd修改自身密码时,本质上是以root身份执行该命令,这样才能修改/etc/shadow
# 设置SUID
chmod u+s # 添加
chmod u-s # 取消
# suid的数字代号为4000,比如4764等价于rwsrw-r--
SUID作用:临时身份切换
(1) 让普通用户对可执行的二进制文件拥有临时的文件所有者权限;
(2) 如果设置的二进制文件没有执行权限,那么suid的权限会显示为大写的S;
(3) 特殊权限仅对二进制可执行程序有效,其他文件或目录则无效。
二、SGID
将目录设置sgid后,如果在该目录下创建文件或目录,新建的文件所在的组都将与该目录所属组保持一致。sgid表现在文件所属组的执行权限位,用小写s表示。
# 设置SGID
chmod g+s # 添加
chmod g-s # 取消
# sgid的数字代号为2000,比如2775等价于rwxrwsr-x
# 创建测试目录
[root@Rainbow tmp]# mkdir /tmp/test && ll | grep 'test'
drwxr-xr-x 2 root root 6 Dec 8 13:49 test
# 修改目录所属组
[root@Rainbow tmp]# chown .zq /tmp/test -R | ll | awk '/test/'
drwxr-xr-x 2 root zq 6 Dec 8 13:49 test
# 为目录设置sgid
[root@Rainbow tmp]# chmod g+s /tmp/test | ll | grep 'test'
drwxr-sr-x 2 root zq 6 Dec 8 13:49 test
[root@Rainbow test]# cd /tmp/test/
# 测试
[root@Rainbow test]# ll
total 0
[root@Rainbow test]# touch myfile.txt && ll | grep 'myfile.txt'
-rw-r--r-- 1 root zq 0 Dec 8 13:56 myfile.txt
[root@Rainbow test]# mkdir mydir && ll | grep 'mydir'
drwxr-sr-x 2 root zq 6 Dec 8 13:59 mydir
SGID作用:资源共享
(1) 当某个目录设置sgid后,在该目录中新建的文件不再是以往创建文件的默认所属组,用户在该目录创建的目录或文件的所属组与该目录的所属组一致;
(2) 使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。使用sgid可以让创建的文件或目录自动的归属与某个指定的组。
三、SBIT
Sticky粘滞位目前只对当前目录有效。
某个目录被赋予粘滞位后,除了root之外,该目录里面的文件,普通用户就算拥有对该目录的w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。粘滞位表现在others的执行权限位,用小写t表示。
# 设置粘滞位
chmod o+t
chmod o-t
# sbit的数字代号为1000,比如1775等价rwxrwxr-t
# 粘滞位目录,其他人的执行权限是t
[zqTest@Rainbow tmp]$ ll -d /tmp
drwxrwxrwt. 14 root root 4096 Dec 8 14:58 /tm
# 用户zqTest创建文件
[zqTest@Rainbow tmp]$ touch sbit_test && ll | grep "sbit"
-rw-rw-r-- 1 zqTest zqTest 0 Dec 8 14:56 sbit_test
# 修改文件所属组
[root@Rainbow tmp]# chown .zq sbit_test && ll | grep sbit
-rw-rw-r-- 1 zqTest zq 0 Dec 8 14:56 sbit_test
# 用户zq删除文件
[zq@Rainbow tmp]$ rm sbit_test
rm: 无法删除'sbit_test': 不允许的操作
# 用户zqTest删除文件
[zqTest@Rainbow tmp]$ rm sbit_test -f
[zqTest@Rainbow tmp]$ ll | grep 'sbit'
SBIT作用:限制删除权限,用户只能删除自己的文件
(1) 特殊sticky目录表现在others的x位,用小写t表示,如果没有执行权限则表现为T;
(2) 即使多个用户对sticky目录有w权限,也只能删除自己在sticky目录下创建的文件。root除外。
四、chattr 和 lsattr 用于凌驾于root之上的权限设置
chattr [+-=] [选项] 文件或目录
# a 让文件或目录仅仅可以追加内容
# i 不能随意更动文件或目录
# 即使是root超管权限也不能。
[root@Rainbow ~]# touch chattr_test
[root@Rainbow ~]# chattr +a chattr_test
[root@Rainbow ~]# lsattr chattr_test -l
chattr_test Append_Only
[root@Rainbow ~]# lsattr chattr_test
-----a-------------- chattr_test
[root@Rainbow ~]# chattr +i chattr_test
[root@Rainbow ~]# lsattr chattr_test -l
chattr_test Immutable, Append_Only
[root@Rainbow ~]# lsattr chattr_test
----ia-------------- chattr_test
[root@Rainbow ~]# chattr -ia chattr_test
[root@Rainbow ~]# lsattr chattr_test
-------------------- chattr_test
[root@Rainbow ~]# lsattr chattr_test -l
chattr_test ---