1. 前言
Linux文件权限除了r、w、x外还有s、t、i、a权限,本文将会讲解这三个特殊权限的使用方法已经注意事项。
2. 了解特殊权限
我们先来看一下
[root@zcwyou ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
我们可以看到,rws,这就是一个具有特殊权限的文件。
再来看一个例子:
[root@zcwyou ~]# ll /usr/bin/locate
-rwx–s–x. 1 root slocate 40520 4月 11 2018 /usr/bin/locate
留意下图中的s
再来看第三个例子:
[root@zcwyou ~]# ls -ld /tmp/
drwxrwxrwt. 8 root root 172 2月 23 03:15 /tmp/
留意下图中的t
其实,以上三个案例分别代表了SUID、SGID、SBIT的应用。
3. 理解suid
当s出现在文件拥有者的x权限上时,如我们上面看到的/usr/bin/passwd这个文件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.SUID对于一个文件有什么限制和功能呢?SUID权限仅对二进制可执行文件有效执行者对于该文件具有x的权限本权限仅在执行该文件的过程中有效执行者将具有该文件拥有者的权限例如普通用户用passwd修改自己的命令,实际上最终更改的是/etc/passwd文件. 此文件时用户管理配置文件,只有root权限才能更改。
我们来看看/etc/passwd的文件。
[root@zcwyou ~]# ll /etc/passwd
-rw-r–r–. 1 root root 1111 2月 10 20:18 /etc/passwd
从图中可以看出,只有root用户才能修改/etc/passwd这个文件,但实际上,任何用户都有权限修改自己的信息,这个文件保存着任意用户的信息,为什么呢?
因为我们在修改用户信息时,不是直接修改这个文件的,而是通过/usr/bin/passwd这个工具去修改的,而这个工具,是直接借用root身份修改的。
此时普通用户通过执行passwd命令,临时拥有root权限,间接的修改/etc/passwd,以达到修改自己密码的权限。
4. 理解SGID
当s出现在目录或文件所属群的x权限上时,此时就称为SET GID简称SGID,那SGID对文件和目录分部有哪些功能呢?
4.1 SGID对目录的作用
SGID对目录使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录使用者在此目录下的群组将会变成该目录的群组若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同
4.2 SGID对文件的作用
SGID 对二进制可执行文件有效程式执行者对于该文件来说,需具备 x 的权限执行者在执行的过程中将会获得该文件群组的支援(用于改文件群组的权限)
5. 理解SBIT
当s出现在目录其他用户的x权限上时,此时就称为Sticky Bit简称SBIT,那SBIT有哪些限制和作用呢?仅对目录有效,对文件无效当使用者在该目录下建立文件或目录时(有权限的情况下),仅自己与 root 才有权力删除新建的目录或文件我们知道/tmp目录是这样的权限。
也就是说,如果用户A在/tmp下建立一个文件,该文件只有A用户才能删除(root例外)
现在我们来验证下,先用root账号在tmp文件中创建一个文件test.txt,然后用zcwyou(其他账号)进入该目录,删除test文件,看看发生什么情况
上图表明,一个具有rwxrwxrwx,777权限的目录,并不能随意删除文件。这就是SBIT的作用。
6. 如何设置SUID、SBID、SBIT
操作这些标志与操作文件权限的命令是一样的, 都是使用命令chmod
和设置和基本权限(rwx)方法基本,可以通过数字设置也可以通过符号设置
数字设置
SUID:4
SGID:2
SBIT:1
符号设置(+-=)
SUID:u+s
SGID:g+s
SBIT:o+t
举例:
[zcwyou@zcwyou ~]$ touch test.txt
[zcwyou@zcwyou ~]$ chmod 4755 test.txt; ll test.txt
-rwsr-xr-x. 1 zcwyou zcwyou 0 2月 23 04:41 test.txt
[zcwyou@zcwyou ~]$ chmod 6755 test.txt; ll test.txt
-rwsr-sr-x. 1 zcwyou zcwyou 0 2月 23 04:41 test.txt
[zcwyou@zcwyou ~]$ chmod 1755 test.txt; ll test.txt
-rwxr-xr-t. 1 zcwyou zcwyou 0 2月 23 04:41 test.txt
[zcwyou@zcwyou ~]$ chmod 7666 test.txt; ll test.txt
-rwSrwSrwT. 1 zcwyou zcwyou 0 2月 23 04:41 test.txt
图6:设置Linux文件特殊权限实用案例
这里 S,T 都是大写是因为文件本身不具有X权限,而 S,T 权限设置成功的。
前提是文件具有 X 权限,因此大写的 ST 代表文件无这些特殊权限。
7. 总结
Linux权限较为复杂,也比较多的安全保护机制,比如传统的rwx,结合本文的特殊权限,再结合文件acl,最后再结合SElinux。这些安全措施能极大提升操作系统的安全性。
评论前必须登录!
注册