(5)特殊权限设置
(5.1)SUID、SGID和sticky-bit
除了上述的基本权限之外,还有特殊权限存在。由于特殊权限会拥有一些“特权”,因而用户若无特殊需要,不应该去打开这些权限,避免安全方面出现严重漏洞,甚至摧毁系统。3个特殊权限位是对可执行文件或目录进行的,使用了特殊权限将影响执行者的操作权限。对文件可以设置SUID和SGID特殊权限;对目录可以设置SGID和sticky-bit特殊权限。下面两表中分别列出了文件和目录特殊权限的说明。
文件的特殊权限说明 | |
特殊权限 | 说 明 |
SUID | 当一个设置了SUID位的可执行文件被执行时,该文件将以其所有者的身份运行,而不是命令执行者的权限。也就是说无论谁来执行这个文件,都有文件所有者的特权,任意存取该文件拥有者能使用的全部系统资源。如果所有者是root,那么执行人就有超级用户的特权 |
SGID | 当一个设置了SGID位的可执行文件执行时,该文件将以其所属组的身份运行,而不是命令执行者的权限。也就是说无论谁来执行这个文件,都有文件所属组的特权,任意存取整个组所能使用的系统资源 |
目录的特殊权限说明 | |
特殊权限 | 说 明 |
SGID | 在目录中创建的所有文件将与该目录的所属组一致。所有被复制到这个目录下的文件,其所属的组都会被重设为和这个日录一致,除非在复制文件时加上-p(preserve,保留文件属性)的参数,才能保留原来所属的群组设置 |
sticky-bit | 存放在该目录的文件仅准许其属主执行删除、移动等操作 |
一个设置了SUID的典型例子是passwd程序,它允许普通用户改变自己的口令,这是通过改变/etc/shadow文件的口令字段实现的。然而系统管理员决不允许普通用户拥有直接改变/etc/shadow文件的权利,因为这绝对不是个好主意。解决方法是将passwd 程序设置SUID,当passwd程序被执行时将拥有超级用户的权限,而passwd程序运行结束后又回到普通用户的权限。下面显示passwd程序的权限。
# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Aug 9 2019 /usr/bin/passwd
一个设置了sticky-bit的典型例子是系统临时文件目录/tmp,这样就避免了不法用户存心破坏,恣意乱删其他用户放置的文件。下面显示/tmp目录的权限:
# ll -d /tmp
drwxrwxrwt. 42 root root 8192 Mar 16 08:39 /tmp
(5.2) SUID、SGID和sticky-bit的表示
从上面的显示可以看出:SUID是占用属主的x位置来表示的;SGID 是占用组的x位置来表示的; sticky-bit 是占用其他人的x位置来表示的。
SUID、SGID和sticky-bit也可用1位八进制数(3位二进制数)表示,如下表所示。
特殊权限的数值表示 | |||||
权 限 | 数值表示 | 说 明 | |||
SUID | SGID | sticky | 二进制 | 八进制| | |
- | - | - | 000 | 0 | 不设置特殊权限 |
- | - | t | 001 | 1 | 只设置sticky |
- | s | - | 010 | 2 | 只设置SGID |
- | s | t | 011 | 3 | 只设置SGID和sticky |
s | - | - | 100 | 4 | 只设置SUID |
s | - | t | 101 | 5 | 只设置SUID和sticky |
s | s | - | 110 | 6 | 只设置SUID和SGID |
s | s | t | 111 | 7 | 设置3种特殊权限 |
(5.3)设置特殊权限
设置特殊权限仍旧使用chmod命令,并且依然有字符设定法和数值设定法之分。
Ø 使用chmod命令的字符设定法时,可以使用s和t权限字符。
Ø 使用chmod命令的数值设定法时,要使用4位八进制数值,其中第1位八进制数用于设置特殊权限,后3位八进制数用于设置基本权限。
操作步骤3.9使用chmod命令设置特殊权限举例
//1.使用chmod命令的文字设定法
//为程序/usr/bin/myapp添加SUID权限
# chmod uts /usr/bi/myapp
//为目录/home/groupspace添加SGID权限
# chmod gts /home/groupspace
//为目录/home/share添加sticky权限
# chmod ot /home/share
//2.使用chmod命令的数值设定法
//为程序/usr/bin/myapp添加SUID权限
# chmod 4755 /usr/bin/myapp
//为目录/home/groupspace添加SGID权限
# chmod 2755 /home/groupspace
//为目录home/share添加sticky权限
# chmod 1755 /home/share