Linux 系统管理13-ACL、SUID、SGID、SBIT(课外知识补充01)

一、ACL 权限控制

1.ACL 概述

ACL (Access Control List),主要作用可以提供除属主、属组、其他人的 rwx 权限之外的细节权限设定

2.ACL 的权限控制

(1)使用者(User)

(2)群组(group)

(3)默认权限掩码(mask)

3.启动 ACL

Centos7系统中默认对ext4,xfs类型的文件系统启用ACL

4.ACL 的设置 setfacl 命令

(1)格式:setfacl [选项] [acl参数] 目标文件或目录

(2)常见选项:

-m:设置后续的 acl 参数,不可与 -x 一起使用

-x:删除后续的 acl 参数,不可与 -m 一起使用

-b:删除所有的 acl 参数

-k:删除默认的 acl 参数

-R:递归设置 acl 参数

-d:设置默认 acl 参数,只对目录有效

(3)ACL 参数格式:

u:用户名:权限 【给某个用户设定权限,若不添加用户名,默认修改属主权限】

g:组名:权限 【给某个组设定权限,若不添加组名,默认修改属组权限】

m:权限 【更改权限掩码】

(4)示例:增加用户 test1 与 gtest 组具有读写权限

发现权限发生变化,并且结尾增加了一个 “+”

5.ACL 的查询 getfacl 命令

(1)格式:getfacl 文件或目录

(2)示例:查看 /aaa/123/txt 的 ACL 设置

6.权限掩码

类似于 umask,需要注意的是使用者的 ACL 权限设置必须要在 mask 的权限范围内才会生效。

修改示例:

7.递归修改目录下现有文件的 ACL 设置

示例:递归修改 /aaa/ 目录及其目录下的 ACL 设置,并新建文件查看是否具有相同 acl 权限

递归式修改目录及目录下的 ACL 设置,仅对当前存在的文件生效,但新建文件并不具有相同的 ACL 设置。

8.预设 ACL 权限

示例:设置 /aaa/ 目录下,test1 用户一直具有读写执行权限

测试之前设置:

9.删除 ACL 设置

(1)删除某文件或目录单个用户或组的权限

(2)删除某文件或目录全部 ACL 设置

递归删除 /aaa/ 目录及其目录下所有文件的 ACL 设置

二、特殊权限 SUID、SGID、SBIT

1.SUID(Set UID)

(1)SUID概述

当 s 标志出现在文件属主权限的 x 权限上时,例如 /usr/bin/passwd 这个文件,权限为 “-rwsr-x-r-x”,这个文件就具有 SUID 特殊权限,在执行此命令的时候,执行者在执行的瞬间将拥有文件属主 root 的身份权限,即 /etc/shadow 文件,普通文件并没有写入权限,但是普通用户可以执行 passwd 命令并对自己的账号密码进行修改,同时写入 /etc/shadow 文件,正是因为 /usr/bin/passwd 这个文件具有 SUID 这种特殊权限。

(2)SUID 特殊权限的特点:

  • SUID 权限仅对二进制程序(binary program)有效
  • 执行者对于该程序需要具有可执行权限
  • SUID 权限仅在执行该程序的过程中有效
  • 执行者将具有该程序拥有者的权限

2.SGID(Set GID)

(1)SGID 概述

当 s 标志出现在文件属组权限的 x 权限上时,例如 /usr/bin/write 文件的权限为“-rwxr-sr-x” 属组为 tty,当执行者执行 locate 命令时,将具有 tty 组成员的权限。

与 SUID 不同的是,SGID 可以针对文件或目录来设定,对于文件来讲,SGID 对二进制程序有用,若程序执行者对于该程序来说具备 x 的权限,则执行者在执行的过程中将会获得该程序群组的支持。

除了与 SUID 相同的对二进制程序有效以外,SGID 还能够用在目录上,当一个目录设定了 SGID 的权限后,用户若对比此目录具有 r 与 x 权限,该用户能进入此目录后,在此目录下的有效群组将变为目录的群组,若该用户具有 w 权限,新建文件或目录后我们会发现,该用户所建立的文件或目录的属组为上层(具有 SGID 设置)的目录的属组。

实验发现,当以 root 身份建立 /aaa/ 目录时并加以 SGID 权限设置,su 到普通用户 huyouba1 身份后,在 /aaa/ 目录下创建文件与目录其属组均为 root,且新建目录也具有 SGID 的特殊权限。可见 SGID 权限对于目录而言,具有递归式的影响,但对新建文件并没有 SGID 权限。且即使是 huyouba1 身份复制到 /aaa/ 目录下一个二进制程序,该文件属组会变为 root,但二进制程序仍不具有 SGID 权限。

3.SBIT(Sticky Bit)粘滞位

(1)SBIT 粘滞位概述

当目录权限 x 的位置变为 t 时,即该目录设有 SBIT 粘滞位权限,主要作用是该目录下的文件即目录仅其属主与 root 用户具有删除该文件或目录的权限,增强安全性。

(2)示例:

创建 /test/ 目录,权限 777,root 用户创建一测试文件,su 到普通用户 huyouba1 身份尝试删除该文件。再将 /test/ 增加 SBIT 粘滞位权限后,再以 huyouba1 身份尝试删除该文件。

实验发现,虽然普通用户 huyouba1 对于 123.txt文件并没有 w 权限,但因上层目录 /test/ 具有 777 的权限,huyouba1 可以删除该目录下的所有文件,这对于系统来讲是十分不安全的。可以通过增加 SBIT 粘滞位权限进行控制。

增加 SBIT 粘滞位后,/test/ 目录下的文件仅其属主和 root 可以删除修改,其他用户无法修改,增加了系统的安全性。需要注意的是,SBIT 粘滞位仅对目录生效,对文件无效。

4.SUID、SGID、SBIT 权限的设定

(1)八进制数设置方法

方法:在属主、属组、其他人的权限前增加特殊权限的八进制数字表示

  • 4 为 SUID
  • 2 为 SGID
  • 1 为 SBIT

示例:

1> 设置 SUID 权限

2> 设置 SGID 权限

3> 设置 SBIT 权限

(2)字母设置方法

示例:

1> 设置 SUID 权限

2> 设置 SGID 权限

3> 设置 SBIT 权限

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦