linux系统中ACL表什么意思
linux系统中ACL表什么意思详细介绍
在 Linux 系统中,**ACL 表(Access Control List,访问控制列表)** 是一种用于精细控制文件和目录访问权限的机制。它扩展了传统的 Linux 权限模型(仅基于所有者、所属组、其他用户三类权限),允许为单个用户或用户组设置更灵活的权限规则。
一、ACL 表的核心作用
- 突破传统权限限制
传统权限(rwx)仅能控制三类用户:- 所有者(User)
- 所属组(Group)
- 其他用户(Others)
而 ACL 可以为任意用户或用户组单独设置权限,例如: - 让用户 A 对文件有读权限,但不属于文件的所有者或所属组。
- 让用户组 B 对目录有写入权限,但禁止删除文件。
- 精细权限控制
支持更细致的权限组合(如单独赋予 “执行” 或 “写入” 权限),甚至可以针对目录设置默认 ACL(新创建的子文件 / 目录自动继承权限)。
二、ACL 表的核心概念
- 基本结构
每个文件 / 目录的 ACL 包含一系列条目,格式为:
plaintextuser:用户名:权限 # 针对单个用户group:组名:权限 # 针对单个用户组
mask:权限 # 限制所有用户/组的最大有效权限
other:权限 # 等效于传统的“其他用户”权限(非必须)
例如,为用户
alice赋予文件data.txt的读和写权限:
plaintextuser:alice:rw- - 默认 ACL(Default ACL)
针对目录设置默认 ACL 后,目录中新创建的文件 / 子目录会自动继承这些权限,格式以d:开头:
plaintextsetfacl -m d:user:bob:rwx /shared_dir # 新文件/目录对bob有读写执行权限
三、常用操作命令
- 查看 ACL
使用getfacl命令:
bashgetfacl 文件名/目录名输出示例:
plaintext# file: data.txt# owner: root
# group: root
user::rw-
user:alice:rw- # 单独为alice设置的权限
group::r-- # 所属组权限(传统)
mask::rw- # 有效权限掩码
other::r--
- 设置 ACL
使用setfacl -m命令,格式为类型:名称:权限:- 为单个用户设置权限:bash
setfacl u:alice:rw data.txt - 为用户组设置权限:bash
setfacl g:dev_group:rx /project - 设置默认 ACL(仅对目录有效,影响新创建的文件 / 目录):bash
setfacl d:u:bob:rwx /shared
- 为单个用户设置权限:bash
- 删除 ACL
- 删除特定条目:bash
setfacl u:alice data.txt - 清除所有 ACL(恢复传统权限):bash
setfacl data.txt
- 删除特定条目:bash
四、注意事项
- 文件系统支持
ACL 需要文件系统挂载时启用acl选项(如ext4、XFS默认支持,FAT32不支持)。
检查挂载选项:
bashacl若未启用,可手动挂载或修改
/etc/fstab添加acl参数。 - 权限掩码(Mask)
mask条目控制所有用户 / 组条目的最大有效权限。例如,若mask为rw-,即使设置了rwx权限,实际生效的也是rw-。可通过setfacl -m m:rw修改掩码。 - 与传统权限的关系
ACL 是传统权限的扩展,而非替代。文件的所有者仍可通过传统权限(chmod)管理基础权限,但 ACL 条目优先级更高。
总结
ACL 表让 Linux 文件权限管理从 “粗粒度”(三类用户)升级为 “细粒度”(任意用户 / 组),适用于多用户协作、共享目录权限分配等场景。通过setfacl和getfacl命令,可灵活配置和查看 ACL 规则,提升系统安全性和管理效率。