Linux特殊权限位
Linux中有12个权限位,后面9个分别为
User,Group,Other的读写执行权限,这次
| 权限位 | 标识符(在文件无执行权限时显示的标识符) | 对应数字 | 显示位置 |
|---|---|---|---|
| SUID | s(S) | 4 | 在属主权限的第三位上 |
| SGID | s(S) | 2 | 在属组权限的第三位上 |
| sticky | t(T) | 1 | 在其他人权限的第三位上 |
suid和sgid只有在属主或者属组有执行权限的时候才有意义,没有执行权限,添加suid/sgid没有任何意义(因为在属主/属组都没有执行权限的情况,就算加了,其它人也无法获得执行权限)- 命令执行者在执行过程中获得文件属主/属组权限
shell
[root@rancher /tmp]# touch 1
[root@rancher /tmp]# chmod 1755 1
[root@rancher /tmp]# ll //加上了sticky
-rwxr-xr-t 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 2755 1
[root@rancher /tmp]# ll //加上了guid上了
-rwxr-sr-x 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 3755 1
[root@rancher /tmp]# ll //加上了guid和sticky上了
-rwxr-sr-t 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 4755 1
[root@rancher /tmp]# ll //加上了suid
-rwsr-xr-x 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 5755 1
[root@rancher /tmp]# ll //加上了suid和sticky
-rwsr-xr-t 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 6755 1
[root@rancher /tmp]# ll //加上了suid和guid
-rwsr-sr-x 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 7755 1
[root@rancher /tmp]# ll //加上了suid和guid还有sticky
-rwsr-sr-t 1 root root 0 Sep 23 10:35 1
[root@rancher /tmp]# chmod 8755 1
chmod: invalid mode: ‘8755’suid小结:
是针对命令和二进制程序的
用户或属主对应的前三位权限的x位上如果有s就表示suid权限 当x位上没有小写x执行权限的时候,suid的权限显示的就是大S
suid的作用是让普通用户可以以root(或其他)的用户角色运行只有root(或其他)账号才能运行的程序或命令, 或程序命令对应本来没有权限操作的文件等。
suid和su及sudo的区别:suid为某一个命令设置特殊权限(使用者为所有人)
sgid小结:
- sgid是针对用户组权限位的
- 对于文件来说,sgid的功能如下:
- sgid仅对二进制程序有效
- 二进制命令或程序需要有可执行权限x
- 执行命令的任意用户可以获得该命令程序执行期间所属组的权限
对于目录来说,sgid的功能如下:- linux里默认情况所以用户创建文件,默认用户和组都是自身
- sgid可以让用户在此目录下创建的文件和目录具有和此目录相同的用户组设置(会继承这个目录的属主和属组,也会继承sgid,权限不会继承)
sticky小结:
- 作用于目录上,使这个目录中的所有文件只有文件的属主或者root可以删除,其他人无法删除