特殊文件权限
除了9位基本权限rwx rwx rwx之外,linux权限位,还有3个特殊权限,一共是12位权限。
suid(setuid)
sgid(setgid)
sbit(sticky)
特殊权限对照表
类别 | suid | sgid | sticky |
---|---|---|---|
字符表示 | S | S | T |
出现位置 | 用户权限位x | 用户组权限位x | 其他用户权限位x |
基本权限位有x | s | s | t |
数字表示法 | 4 | 2 | 1 |
八进制表示法 | 4000 | 2000 | 1000 |
生效对象 | 用户位 | 用户组 | 其他用户 |
一、SUID 特殊权限
1. suid通过S字符标识,存在于用户权限位的x权限对应位置。
2. 如果某文件,用户权限位本身就有x权限,给该文件设置suid权限时,则以小写s标识,否则就是大写的S字符。
3. 给文件设置s权限对应的数字表示法是4,八进制数下可以用4000
4. suid同样也用chmod设置权限,可以以字符法,数字法两种标识。
[yuchao01@yuchao-linux01 ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
SUID 特殊权限仅适用于可执行文件
所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件
一旦文件执行结束,身份的切换也随之消失。
解释关于linux的用户创建。
用户创建完用户后,需要修改密码,执行passwd命令
但是passwd命令需要读取,修改/etc/passwd、/etc/shadow文件,这些文件都是属于root,那不就没权限操作了吗,但是普通用户,如何执行passwd命令,修改自己的密码呢?
可以让普通用户临时获得root的身份,不就有属主的权限了吗。
这就是设置SUID的一个根本原因。且SUID特殊权限,只能用在二进制可执行文件上。
# 去除passwd的s权限
[root@yuchao-linux01 yuchao01]# chmod u-s /usr/bin/passwd
[root@yuchao-linux01 yuchao01]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
# 如何再给SUID特殊权限加上去。
[root@yuchao-linux01 ~]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
# 添加方式一
[root@yuchao-linux01 ~]# chmod u+s /usr/bin/passwd
# 添加方式二,数字权限
[root@yuchao-linux01 ~]# chmod 4755 /usr/bin/passwd
[root@yuchao-linux01 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
总结suid
请注意:学习SUID是为了知道有它的存在,但不要随便用。
SUID位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。
如果属主是root的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。
1. suid功能是针对二进制可执行命令设置的,不能用在shell脚本上。
2. 用户权限位的x权限位置处,如果有s或S,表示该命令存在suid权限。
3. suid的作用就是,让普通用户在执行设置了suid权限的命令时,可以拥有其(属主)的权限(一般默认是root)。
4. 二进制命令,如系统提供的ls,mkdir等命令,都需要有x权限才可以操作。
5. suid是一个危险的命令,对系统有一定威胁,一般依然是用sudo命令代替suid等特殊权限操作。
6. 系统安全优化时,会尽量去除所有设置suid的命令。
二、SGID特殊权限
1.对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限,和9位基本rwx那个理解概念一样。
2. suid是获得文件属主的权限,sgid是获得文件属组的权限
3. sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用。
对文件来说
1. sgid只对二进制命令生效,且需要二进制命令本身有x权限。
2. 执行包含sgid权限的二进制命令时,会获得该命令在执行期间所属的组的身份与权限。
对文件夹来说
1. linux中所有的用户,默认创建的文件,文件夹,属主和属组都是用户自身。
2. 设置了sgid的目录,会保证在这个目录下创建的文件、文件夹都保持同样的权限属性,都属于该目录的属组权限。
# 去除passwd的s权限
[root@yuchao-tx-server ~]#chmod g-s /home/admins/
# 加上sgid特殊权限
# 添加方式一
[root@yuchao-tx-server ~]#chmod g+s /home/admins/
# 添加方式二,数字权限
[root@yuchao-tx-server ~]# chmod 2770 /home/admins/
[root@yuchao-tx-server ~]# ll -ld /home/admins/
drwxrws--- 2 root adminuser 4096 3月 16 18:44 /home/admins/
三、SBIT特殊权限(sticky bit)
sbit原理
粘滞位(Sticky bit),又称作粘着位,linux下另一个特殊权限。
sbit粘滞位,用的已经很少了,但是对于系统特殊文件夹/tmp来说,是整个系统所有用户的临时文件存放地,谁都有任意的权限,你会发现该目录的权限巨大。
[root@yuchao-tx-server ~]# ll -d /tmp/
drwxrwxrwt. 8 root root 4096 3月 16 18:54 /tmp/
但是看到了一个特殊权限t
一句话总结。
当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件,而不能影响到其他人。
演示
没有设置粘滞位,且目录是777权限时,也就是任意的user、group、other角色在这个目录下,可以进行读、写、执行任意文件。
最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。
如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。
实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
因此,t权限,是用于限制用户权限,禁止用户删除其他人资料的
[root@jumpserver ~]# ll /tmp/ -d
drwxrwxrwt. 14 root root 4096 Feb 10 18:49 /tmp/
命令:chmod
语法:# chmod [选项] 文件夹
作用:只允许文件的创建者和root用户删除文件
常用选项
o+t 添加粘滞位
o-t 去掉粘滞位
用法:chmod o+t 目录名
示例代码:
#chmod o+t
含义:给目录增加粘滞位权限。
标签:文件,特殊,suid,passwd,用户,权限,root
From: https://www.cnblogs.com/chunjeh/p/17542606.html