特殊文件权限

特殊文件权限

除了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 
含义:给目录增加粘滞位权限。
posted @ 2023-07-10 22:56  村尚chun叔  阅读(39)  评论(0编辑  收藏  举报