zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Linux特殊权限 suid | sgid | sticky

2023-02-18 16:38:32 时间

文件的特殊权限:suid sgid sticky

其实文件不目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.

特殊权限

文件的特殊权限:suid sgid sticky

1) SUID(set uid 设置用户 ID):限定:只能设置在二进制可执行程序上面。对目录设置无效

功能:程序运行时的权限从执行者变更成程序所有者的权限

2) SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置

功能:在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组

3) Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位

这 3 个特殊权限对应的数值为

SUID 属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l”或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有 SUID属性。比如/usr/bin/passwd 文件
[root@foundation0 ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 34512 Aug 12  2018 /usr/bin/passwd

普通用户 kiosk,没有对 shadow 文件写入的权限, 但是 kiosk 用户使用 passwd 修改自己密码时,可以修改 shadow 文件中的内容,这是什么原因?

[root@foundation0 ~]# ll /etc/shadow
----------. 1 root root 1363 Nov 16  2020 /etc/shadow

# 因为 kiosk 用户执行 passwd 命令时,权限会提升成 root 用户,所以可以修改成功。

案例

[kiosk@foundation0 ~]$ less /etc/shadow
/etc/shadow: Permission denied

[root@foundation0 ~]# chmod u+s /usr/bin/less

[root@foundation0 ~]# ll /usr/bin/less
-rwsr-xr-x. 1 root root 189064 Aug 12  2018 /usr/bin/less

[kiosk@foundation0 ~]$ less /etc/shadow
SGID:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限。
[root@foundation0 ~]# mkdir test

[root@foundation0 ~]#  ll -d test
drwxr-xr-x. 2 root root 6 Nov 21 05:52 test

[root@foundation0 ~]# chmod g+s test

[root@foundation0 ~]# chown :bin test/

[root@foundation0 ~]# touch test/a.txt

[root@foundation0 ~]# ll test/
total 0
-rw-r--r--. 1 root bin 0 Nov 21 05:55 a.txt
Stickybit: 只作用于目录
功能:目录下创建的文件只有 root、文件创建者、目录所有者才能删除。
# 例: 系统中的 /tmp 目录是这样的
[root@foundation0 ~]# ll -d /tmp/
drwxrwxrwt. 14 root root 4096 Nov 21 05:55 /tmp/

# 用法:
# chmod o+t /tmp/test/
-----
[root@foundation0 ~]# mkdir /dir

[root@foundation0 ~]# chmod o+t /dir/

[root@foundation0 ~]# touch /dir/root.txt

[root@foundation0 ~]# ll -d /dir/
drwxr-xr-t. 2 root root 22 Nov 21 05:59 /dir/

[root@foundation0 ~]# chmod o+w /dir/

[kiosk@foundation0 ~]$ touch /dir/kiosk.txt

[kiosk@foundation0 ~]$ ll /dir/
total 0
-rw-rw-r--. 1 kiosk kiosk 0 Nov 21 06:00 kiosk.txt
-rw-r--r--. 1 root  root  0 Nov 21 05:59 root.txt