setuid | setgid | sticky | |
---|---|---|---|
符号表示 | u+s | g+s | o+t |
数值表示 | setuid=4 | setgid=2 | sticky=1 |
文件有x权限 | 表示为s | 表示为s | 表示为t |
文件没有x权限 | 表示为S | 表示为S | 表示为T |
下面将分别叫做SUID、SGID、STICKY
在这里用/etc/shadow
文件为例说明。
[root@canway01 ~]# ll /etc/shadow
----------. 1 root root 1270 11月 8 18:26 /etc/shadow
如上图,我们不难发现,/etc/shadow
文件对于除了root外的任何用户都是不能读写执行的。
一个普通用户只能对自己作为属主的文件进行r读取、w写入、x执行
的操作。
普通用户修改自己的密码过程如下:
普通用户的信息保存在/etc/passwd
中,而密码在/etc/shadow
中;修改密码时,用到了passwd
命令,该命令的所有者是root,具有超级管理员权限;而这个命令(Linux中一切皆文件嘛)也具有SUID权限;所以普通用户在修改自己的密码时,利用passwd命令的SUID权限,借助root用户的权限,进行用户信息和密码的修改。
如果用一句话来说明SUID的作用:对于可执行文件(二进制文件),将会以文件所有者(属主)的权限去执行命令,而不是以当前使用者用户的权限去执行命令。—”借用皇帝的尚方宝剑“。
只对文件有影响,对目录没有影响
总体原理类似于SUID。
将目录设置为SGID后,如果在该目录下创建文件,都将与该目录的所属组保持一致。
对文件和目录都有影响
普通用户对目录有w权限:
如果没有粘滞位,那么它可以删除目录下的所有文件,包括其他用户建立的文件
如果有粘滞位,那么它只能删除该目录下自己建立的文件
无论有没有粘滞位,root用户依旧至高无上,可以任意而行
只对目录有影响
这个命令只有root用户可以使用,作用是修改文件的权限属性
一般当我们不想让别的用户移动或更改文件目录时,使用命令即可锁定文件。
[root@canway01 ~]# chattr +i a.txt
[root@canway01 ~]# ll
总用量 8
-rw-------. 1 root root 1531 11月 4 17:34 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 11月 8 19:30 a.txt
-rw-r--r--. 1 root root 1579 11月 4 17:37 initial-setup-ks.cfg
[root@canway01 ~]# echo 123 > a.txt
-bash: a.txt: 权限不够
由上图可知,锁定文件后,即使是root用户也无法修改文件。
[root@canway01 ~]# lsattr a.txt
----i----------- a.txt
通过lsattr
即可查看文件的锁定情况
如果想解锁文件,可以直接用-
,类似于普通文件的权限增减。
[root@canway01 ~]# chattr -i a.txt
[root@canway01 ~]# lsattr a.txt
---------------- a.txt