Linux 文件特殊权限——suid/sgid/t

Set UID
当s这个标志出现在文件所有者的x权限上时,例如 “-rwsr-xr-x” ,此时被称为Set UID,简称为SUID的特殊权限。

  • SUID权限仅对二进制程序有效;
  • 执行者需要对此程序具有x的可执行权限;
  • 本权限仅在执行该程序的过程中有效;
  • 执行者将具有该程序所有者的权限;

例如:/etc/shadow是记录系统所有账号的密码的文件,它的权限为-r--------1 root root,只有root才能强制修改此文件内容。但是普通用户也可以修改自己的密码,原因是普通用户修改密码的时候执行了/usr/bin/passwd(-rwsr-xr-x)这个程序,执行的过程中临时获得了root权限,所以可以修改/etc/shadow这个文件,从而修改密码。如果用户执行其他不具有SUID权限的程序,则不能访问/etc/shadow,如用户执行/bin/cat(-rwxr-xr-x)这个程序时,是无法读取/etc/shadow的。

root@ubuntu:~$ ls -l /usr/bin/passwd 
-rwsr-xr-x 1 root root 54256 May 16 2017 /usr/bin/passwd

Set GID
SGID可以针对文件或目录设置。
当s标志出现在用户组的x权限上时,例如“-rwx–s–x”为Set GID,简称为SGID的特殊权限,SGID可以针对文件或目录设置。


对于文件来说:

  • SGID对二进制程序有用;
  • 程序执行者对于该程序来说,须具备x的可执行权限;
  • 执行者在执行的过程中将会获得该程序用户组的支持;

当一个目录设置了SGID的权限后,它将具有以下功能:

  • 用户若对此目录具有r与x的权限时,该用户能够进入此目录;
  • 用户在此目录下的有效用户组将会变成该目录的用户组;
  • 若用户在此目录下具有w的权限,则用户创建新文件的用户组与此目录的用户组相同;


Sticky Bit
Sticky Bit,简称SBIT。目前只针对目录有效,针对文件已经无效。
SBIT的作用:当一个用户对某目录是具有用户组或其他人的身份,并具有w权限(即具有写入的权限时),这表明该用户可以对该目录下任何人新建的目录或文件进行删除、移动、重命名等操作。不过,如果该目录具有SBIT权限时,则仅有文件属主和root才能删除、移动、重命名此文件,普通用户无法删除该目录下不属于自己的文件。

下面通过一个实例来体会这个t权限的用法:

(1) root用户在/tmp目录下创建一个test目录,并设置test目录的相关权限为1777(有特殊权限t)

[root@localhost tmp]# mkdir test
[root@localhost tmp]# chmod 1777 test
[root@localhost tmp]# ls -ld test
drwxrwxrwt. 2 root root 4096 Oct 12 22:31 test

(2) 切换到第一个用户zhangming,在test目录下创建一个新文件aaa.txt,并写入数据

[root@localhost tmp]# su zhangming
[zhangming@localhost tmp]$ touch test/aaa.txt
[zhangming@localhost tmp]$ echo "hello" >> test/aaa.txt
[zhangming@localhost tmp]$ ls -l test
total 4
-rw-rw-r--. 1 zhangming zhangming 6 Oct 12 22:34 aaa.txt

(3) 切换到第二个用户shuihuo379,尝试删除zhangming用户创建的文件aaa.txt,此时提示无法删除

[zhangming@localhost tmp]$ su shuihuo379
[shuihuo379@localhost tmp]$ ls -l test/aaa.txt
-rw-rw-r--. 1 zhangming zhangming 6 Oct 12 22:34 test/aaa.txt
[shuihuo379@localhost tmp]$ rm test/aaa.txt
rm: remove write-protected regular file `test/aaa.txt'? y
rm: cannot remove `test/aaa.txt': Operation not permitted

(4) 重新切换到root用户,执行删除权限位t操作

[shuihuo379@localhost tmp]$ su
[root@localhost tmp]# chmod -t test
[root@localhost tmp]# ls -ld test
drwxrwxrwx. 2 root root 4096 Oct 12 22:33 test

(5) 再次切换到用户shuihuo379,尝试删除zhangming用户创建的文件aaa.txt,此时删除成功,zhangming用户创建的文件aaa.txt已经不存在了

复制代码
[root@localhost tmp]# su shuihuo379
[shuihuo379@localhost tmp]$ ls -l test
total 4
-rw-rw-r--. 1 zhangming zhangming 6 Oct 12 22:34 aaa.txt
[shuihuo379@localhost tmp]$ rm test/aaa.txt
rm: remove write-protected regular file `test/aaa.txt'? y
[shuihuo379@localhost tmp]$ ls -l test
total 0
复制代码


SUID SGID SBIT权限的设置
特殊权限对应的数字:

SUID:4
SGID:2
SBIT :1

1.符号类型修改权限

chmod u+s test --为test文件加上suid权限
chmod g+s test --为test文件加上sgid权限
chmod o+t test --为test文件加上sbit权限

2.数字类型修改权限
我们知道普通文件的rwx权限修改
对于特殊权限,需要在最前面增加一位,SUID:4,SGID:2,SBIT:1
chmod 4777 test --test拥有SUID权限,rwsrwxrwx
chmod 2777 test --test拥有SGID权限,rwxrwsrwx
chmod 1777 test --test拥有SBIT权限,rwxrwxrwt

---------------------
原文地址:

https://blog.csdn.net/Faith_runner/article/details/78107940

posted @ 2019-03-02 11:05  wang-shishuang  阅读(586)  评论(0编辑  收藏  举报