在日常使用 Ubuntu 或其他 Linux 系统时,你是否曾遇到过这样的问题:需要为某个特定用户或用户组赋予对某个文件或目录的特殊访问权限,而传统的
chmod和
chown命令又无法满足这种细粒度的需求?这时候,ACL(Access Control List,访问控制列表) 就派上用场了!本文将手把手教你如何使用
setfacl命令来设置和管理文件系统的 ACL 权限,即使是 Linux 新手也能轻松掌握。

什么是 ACL?
ACL 是传统 Unix 文件权限模型的扩展。标准权限只允许设置所有者(owner)、所属组(group)和其他用户(others)三类权限,而 ACL 允许你为任意多个用户或组单独设置读(r)、写(w)、执行(x)权限,实现更精细的权限控制。
在 Ubuntu 中,要使用 ACL 功能,首先确保你的文件系统(如 ext4)已挂载并启用了 ACL 支持(现代 Ubuntu 默认已启用)。
安装 ACL 工具(如未安装)
虽然大多数 Ubuntu 系统默认包含 ACL 工具,但如果你发现
setfacl命令不存在,可以手动安装:
sudo apt updatesudo apt install acl
基本语法:setfacl 命令
最常用的
setfacl命令格式如下:
setfacl -m u:用户名:权限 文件或目录setfacl -m g:组名:权限 文件或目录
其中:
-m表示“修改”ACL 条目
u:表示针对用户(user)
g:表示针对组(group) 权限可以是
r(读)、
w(写)、
x(执行)的任意组合,例如
rw、
rx等
实战示例:为特定用户设置文件权限
假设你有一个名为
project.txt的文件,属于用户
alice,现在你想让另一个用户
bob能读写这个文件,但又不想改变文件的所有者或所属组。
你可以执行以下命令:
setfacl -m u:bob:rw project.txt
执行后,
bob就拥有了对
project.txt的读写权限。
查看 ACL 权限
使用
getfacl命令可以查看文件或目录的 ACL 设置:
getfacl project.txt
输出可能如下:
# file: project.txt# owner: alice# group: aliceuser::rw-user:bob:rw-group::r--mask::rw-other::r--
可以看到,除了默认权限外,还多了一行
user:bob:rw-,说明 ACL 已生效。
设置默认 ACL(用于目录)
如果你希望在一个目录中新建的文件自动继承某些 ACL 权限,可以设置默认 ACL(Default ACL)。这仅对目录有效。
setfacl -d -m u:bob:rw /path/to/shared_dir
此后,在
/path/to/shared_dir中创建的新文件或子目录都会自动拥有
bob的读写权限(受 mask 限制)。
删除 ACL 条目
若要删除某个用户的 ACL 权限,使用
-x参数:
setfacl -x u:bob project.txt
若要清除所有 ACL 权限(恢复为传统权限),使用:
setfacl -b project.txt
总结
通过
setfacl命令,你可以灵活地管理 Ubuntu 系统中的文件和目录权限,实现比传统 chmod 更精细的控制。无论是团队协作、共享目录,还是安全审计场景,Linux ACL权限设置 都是非常实用的功能。
掌握这些基础操作后,你就能更自信地进行 Ubuntu文件权限教程 中提到的各种高级权限管理任务。记住,良好的权限管理是系统安全的重要一环!
希望这篇关于 Ubuntu setfacl命令 的教程对你有所帮助。如果你正在学习 文件系统权限管理,不妨动手实践一下,加深理解。
