文章目录
Linux 文件权限管理:chmod 与 ACL 的区别与实战
在日常的 Linux 使用中,我们经常会遇到权限问题。比如共享数据、限制访问、赋予同事只读权限等。这时候常见的工具有两类:chmod(传统 Unix 权限)和 setfacl(访问控制列表,ACL)。本文整理了区别,并提供一些实战命令。
一、chmod 的权限机制
Linux 里的文件权限一开始只有 三类主体:
- owner(属主):文件的拥有者。
- group(属组):通常是某个用户组。
- others(其他人):系统里的其他用户。
每类主体可以有三种权限:
r(read) → 读权限(文件可读/目录可列出)。w(write) → 写权限(文件可改/目录可增删文件)。x(execute) → 执行权限(文件可执行/目录可进入)。
用 ls -l 就能看到:
-rwxr-x---
表示:
- owner 有
rwx - group 有
r-x - others 无权限
👉 局限:只能控制三类主体,无法对具体用户做细粒度控制。
二、ACL 的权限机制
ACL (Access Control List) 是对 chmod 的扩展,允许对任意用户或组单独授权。
例子:
# 给 alice 读/执行权限
setfacl -m u:alice:rx /data/project
# 给 bob 读写权限
setfacl -m u:bob:rw /data/project
# 查看 ACL
getfacl /data/project
ACL 能精细化控制权限,非常适合多人协作场景。
三、chmod 与 ACL 的关系
- chmod = 基础框架,三类主体(owner/group/others)。
- ACL = 补充规则,可对个别用户/组单独设定。
- 最终权限 = chmod + ACL 的综合结果。
⚠️ 注意:如果 chmod 去掉了执行权限,即使 ACL 给了用户 rx,用户也可能还是进不去目录。因此建议 chmod 设置基础安全边界,ACL 做额外授权。
四、实战示例
1. 给自己目录设置基本权限
chown -R User:User /home/User
chmod -R 2750 /home/User
- 目录属主
yangxin拥有完全权限。 - 属组有访问权限。
- others 无权限。
2. 给同事只读访问权限
setfacl -R -m u:alice:rx /home/alice
setfacl -R -m u:bob:rx /home/bob
# 默认 ACL,保证新建文件也继承
setfacl -d -m u:alice:rx /home/alice
setfacl -d -m u:bob:rx /home/bob
效果:
- 个人用户:完全控制。
- 同事们:可以
ls、cp,但不能删除/修改。 - 其他用户:没有权限。
3. 恢复可执行文件权限的坑
如果不小心用 chmod -R 664 把所有文件权限覆盖,像 conda 这种可执行程序会失效:
-bash: /home/user/miniconda3/bin/conda: Permission denied
修复方法:
find /home/user/miniconda3/bin -type f -exec chmod 755 {} +
五、总结
-
chmod 适合简单场景,三层模型够用。
-
ACL 适合团队协作,可以精细化到具体用户。
-
最佳实践:
- 用 chmod 设定基础权限(owner / group / others)。
- 用 ACL 对需要的用户/组补充授权。

2万+

被折叠的 条评论
为什么被折叠?



