文章目录
- 使用ACL控制文件访问
-
- 解释文件ACL
-
- 什么是ACL
- ACL 的支持
- 使用 ls 命令查看 ACL 权限
- 使用 getfacl 命令查看 ACL 权限
- ACL权限优先级
- 使用ACL保护文件安全
-
- setfac
- 控制默认ACL文件权限
使用ACL控制文件访问
解释文件ACL
什么是ACL
- ACL允许向文件分配详细的权限。除标准文件所有者、组所有者和其他文件权限外, 还可以向指定用户或指定组,以及 UID 或 GID 确定的用户和组授予权限。所有这些权限都应该是 使用相同的权限标志:r -读取、w -写入、x-执行
- 文件所有者可以在单个文件或目录上设置 ACL。新文件和子目录可以自动从父目录中默可以 认 ACL (若已设置)中继承 ACL 设置。类似于常规文件的访问规则,父目录的层次结构 至少需要设置其他用户执行权限 ,为了使用指定用户和指定组的访问权
ACL 的支持
- ACL需要文件系统的支持,XFS/ext3/ext4 等待文件系统内置正确 ACL 支持,在 在早期版本中,应确认是否正确使用 ACL 的支持
使用 ls 命令查看 ACL 权限
-
Is -l命令只输出最少ACL设置详细信息:
-
[student@server0 ~]$ ll roster.txt
-
-rw-rwxr– 1 student student 48 Dec 5 00:47 roster.txt
-
由10个字符组成的权限字符串的末尾是 ,也就是说,这份文件是相关的 ACL 设 置。对用户 、小组和其他rwx标志解释如下:
-
用户:显示用户 ACL 设置与标准用户文件设置相同
-
组:显示当前的 ACL 掩码设置,而不是组所有者设置
-
其他:展示其他 ACL 设置与标准的其他文件设置相同
使用 getfacl 命令查看 ACL 权限
- 查看文件 ACL
- 在文件上显示ACL设置,使用 getfacl file
- 示例:使用 getfacl 命令查看 /run/log/journal 子目录中的文件
[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-YHpd8wvQ-1627779386241)(C:\Users\Lenovo\Desktop\学习\笔记\Linux\查看目录ACL.png)]
ACL权限优先级
- 在决定一个过程(正在运行的程序)是否可以访问文件时,将按以下规则匹配 ACL 权限:
- ① 如果过程是作为文件所有者运行的,则应用文件的用户ACL权限
- ② 指定用户 ACL 规定中列出的用户身份操作过程应用于指定用户 ACL 权 限制(只要允许掩码)
- ③ 如果运行过程与文件的组所有者相匹配,或以显式指定组 ACL 条目组的身份运行过程应用于匹配ACL权限(只要允许掩码)
- ④ 否则,将使用其他应用文件 ACL 权限
使用ACL保护文件安全
setfac
- 使用 setfacl 添加、修改或删除文件和目录 ACL 设置
- ACL采用普通权限文件系统表示法:(不允许使用数字加权法)
- “r表示读取权限
- “w表示写入权限
- “x表示执行权限
- -
- 以递归的形式设置 ACL 当时,大写字母X如果文件没有相关执行,可以用于表示: 对于权限,只应设置目录规文件)的执行权限。这种行为和 chmod 相同
#添加 user1 对 file1 具有 rw- 的 ACL 权限 setfacl -m u:user1:rw- file1 # 使用 -m 或 -M 选项设置 ACL。如果设置 name 留空,适用于文件所有者,否则,name 可以是用户名或 UID 值 #修改 g1 对 file1 具有 rw- 的 ACL 权限 setfacl -m g:g1:rw- file1 #通过 ACL,修改其他用户对 file1 不具有权限 setfacl -m o::- file1 #修改文件所有者和组 g2 对 file1 分别具有 rwx 和 rw- 的 ACL 权限 setfacl -m u::rwx,g:g2:rw- file1 #通过同一命令添加多个项目,并用逗号分开 #修改 file1 的 ACL 掩码为 r-- setfacl -m m::r-- file1 #将 file2 的 ACL 权限设置与 file1 一致 getfacl file1 | setfacl --set-file=- file2 #--set-file 接受文件或 stdin 作为占位符指定中间输入和短划线 stdin 使用。在这里,设置 file1 的 ACL 检查结果 file2 的ACL设置的输入 #设置目录 dir1 文件所有者 ACL 权限为 rw-,并在子文件和子目录中递归 setfacl -R -m u::rw- dir1 #使用 -R 选项实现递归,涉及执行权限时注意使用 X,并区分递归和继承 #删除 user1 对 file1 的 ACL 权限 setfacl -x u:user1 file1 #使用 -x 选项删除某条 ACL 支持使用逗号分隔多个项目的权限 #删除 file1 的所有 ACL 权限 setfacl -b file1 #使用 -x 删除指定用户和组的选项 ACL 权限和掩码也能达到同样的效果
控制默认ACL文件权限
- 默认可以设置在目录中ACL,这些ACL所有新文件和新子目录都将自动继承。可用于每个项目。 标准 ACL 设置默认设置 ACL 权限包括默认掩码。
- 注:目录本身也需要注意: ACL 控制访问权限的权限,默认ACL目前目录不会生效,只会生效 提供权限继承的效果
#添加默认ACL setfacl -m d:u:<name>:<rwx> <directory/file> #删除默认ACL
setfacl -x d:u:<name> <directory/file>
添加默认ACL setfacl -m d:u:: <directory/file>
#删除默认ACL setfacl -x d:u: <directory/file>