特殊文件权限
特殊文件权限
除了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 含义:给目录增加粘滞位权限。