linux命令setfacl
linux命令setfacl详细介绍
setfacl 是 Linux 系统中用于设置文件和目录的访问控制列表(ACL)的命令。ACL 允许你为文件和目录指定更细致的访问权限,除了标准的用户(owner)、组(group)和其他用户(others)权限之外,还能为特定用户或组设置权限。
基本语法
bash
setfacl 选项 权限 文件名
常用选项
-m:修改或添加 ACL 条目。-x:移除指定的 ACL 条目。-b:移除所有扩展的 ACL 条目,只保留基本的文件权限。-k:移除默认的 ACL 条目。-R:递归地应用 ACL 到目录及其子目录和文件。-d:设置默认的 ACL,只对目录有效,新创建的文件和子目录会继承该默认 ACL。
权限表示
权限由三部分组成:用户 / 组标识、权限类型和权限设置。
- 用户 / 组标识:可以是用户名、组名、
u:(代表用户)、g:(代表组)、o:(代表其他用户)、mask:(代表权限掩码)。 - 权限类型:
r(读)、w(写)、x(执行)。 - 权限设置:
=(设置权限)、+(添加权限)、-(移除权限)。
示例
1. 为特定用户添加权限
为用户 john 对文件 test.txt 添加读和写权限:
bash
setfacl u:john:rw test.txt
2. 为特定组添加权限
为组 developers 对目录 project 及其子目录和文件添加读、写和执行权限:
bash
setfacl g:developers:rwx project
3. 移除特定用户的权限
移除用户 john 对文件 test.txt 的所有权限:
bash
setfacl u:john test.txt
4. 移除所有扩展的 ACL 条目
移除文件 test.txt 的所有扩展 ACL 条目:
bash
setfacl test.txt
5. 设置默认的 ACL
为目录 project 设置默认的 ACL,新创建的文件和子目录会继承该 ACL:
bash
setfacl u:john:rw project
查看 ACL
可以使用 getfacl 命令查看文件或目录的 ACL:
bash
getfacl test.txt
912getfacl test.txt
通过 setfacl 命令,你可以灵活地管理文件和目录的访问权限,满足更复杂的权限需求。