文章封面: 崩坏学园 2/艾拉·苍墟之影
linux 的特殊权限分别为SUID,SGID,SBIT三个权限。
SUID 权限
当可执行文件拥有SUID 权限,普通用户就可以,以文件所有者的权限来执行该文件,从而临时获得特定权限。
如果所有者是root用户,它将具有与 root 用户相同的特权级别,可以执行只有 root 用户才能执行的操作。
被赋予SUID 权限的文件会变成红色的,文件属性的所有者权限会变成 rws 而不是 rwx。
普通用户就可以,以root用户的权限使用该命令。
移出了SUID 权限,普通用户就无法访问root目录的文件了。
注意:千万不要将 SUID 权限赋予 vim、cat、rm 等命令上面!!!可能会引发潜在的安全风险。
SGID 权限
SGID 权限可以应用于可执行文件和目录,不过这次是只获得组的权限。
可执行文件:可以让使用者临时获得,文件所属组的权限。目录:会影响在该目录下新创建的文件或子目录,可以自动继承该目录的组身份。
SGID 权限针对可执行文件:
赋予 SGID 权限后文件会变为黄色,文件所属组的权限会变成 r-s 不是 r-x。
普通用户也可以,以所属组的权限使用该命令,其实和上面 SUID 权限的情节差不多了,不过针对的是组。
移出对执行文件的SGID 权限。
SGID 权限针对目录:
首先创建目录,并赋予权限。
赋予 SGID 权限给目录后,目录所属组的权限会变成 rws。
切换普通用户创建文件来实验自动继承,创建的文件已经继承了上一级目录的用户组了。
移出对目录的SGID 权限。
SBIT 权限
当某个目录被赋予SBIT 权限后,那么只有该目录的所有者和root用户才能够删除该目录下的文件或子目录,其他用户不能删除其他人的文件。
对目录赋予SBIT 权限后目录的其他用户的权限会变成 rwt。
然后切换到普通用户先创建个文件,让其他用户来尝试删除。
删除失败,其实还可以和 SGID 权限一起使用的。
SUID,SGID,SBIT权限的设置方法
符号模式
1 | chmod [ugo][+-=][st] 文件名/目录名 |
u 表示文件所有者,g 表示同组用户,o 表示其他用户,a 表示所有用户(等价于 ugo 的组合)。+ 表示添加权限,- 表示移除权限,= 表示设置与指定权限相同的权限。s 设置 UID 或 GID 位,t设置 SBIT 权限。
数字模式
1 | chmod [0-7][0-7][0-7][0-7] 文件名/目录名 |
这里比前面的要多一位,不过影响不大。
第一位是SUID,SGID,SBIT权限的位置。
后三位(0-7)表示所有者、所属群组和其他用户的读取、写入和执行权限(rwx)
经常用的就 4,2,1 下面没必要记住。
| 权限 | 数字 | 描述 |
|---|---|---|
--------- |
0 |
没有对应权限 |
--------t |
1 |
SBIT |
-----s--- |
2 |
SGID |
-----s--t |
3 |
SGID+SBIT |
--s------ |
4 |
SUID |
--s-----t |
5 |
SUID+SBIT |
--s--s--- |
6 |
SUID+SGID |
--s--s--t |
7 |
SUID+SGID+SBIT |
如果没有搞明白可以试试下面这个网站,挺直白的操作几下就明白原理了,可能要梯子。
这里 → Chmod Calculator