249 条记录
25 私有链接
25 私有链接
ACL 权限小抄(长期维护版)
一句总纲(先记住这句)
👉 “能不能删 / 改名,看父目录;能不能进 / 写,看当前目录;ACL 是系统级,FTP/SMB 都吃它。”
一、最常见权限语义速查
1️⃣ 只读目录(能看、能进,不能改)
setfacl -m u:linshi:rx DIR
适用:
- 部门根目录
- 不允许结构变化的层级
2️⃣ 完全可操作目录(上传 / 删除 / 改名 / 建目录)
setfacl -m u:linshi:rwx DIR
setfacl -m m:rwx DIR
3️⃣ 管理员(xxh)全权
setfacl -m u:xxh:rwx DIR
setfacl -m m:rwx DIR
4️⃣ 只允许在目录里“操作内容”,但不能删目录本身
核心思想:
- 父目录:
rx - 子目录:
rwx
# 父目录
setfacl -m u:linshi:rx PARENT
# 子目录
setfacl -m u:linshi:rwx CHILD
setfacl -m m:rwx CHILD
二、默认 ACL(新文件/目录自动继承)
5️⃣ 以后新文件也要有同样权限(非常重要)
setfacl -d -m u:linshi:rwx DIR
setfacl -d -m u:xxh:rwx DIR
setfacl -d -m m:rwx DIR
记忆点:
-d = 将来
三、递归修复已有文件(常用)
6️⃣ 让“已经存在的文件/目录”立刻生效
setfacl -R -m u:linshi:rwx DIR
setfacl -R -m u:xxh:rwx DIR
四、for 循环批量改目录(你最爱用的)
7️⃣ 一组目录统一赋权(强烈推荐)
for d in 010_* 020_* 030_*; do
setfacl -m u:linshi:rwx "$d"
setfacl -m u:xxh:rwx "$d"
setfacl -m m:rwx "$d"
setfacl -d -m u:linshi:rwx "$d"
setfacl -d -m u:xxh:rwx "$d"
setfacl -d -m m:rwx "$d"
done
8️⃣ 针对“目录下一层”批量操作(你用过的)
for d in /ftp-data/worker-data/090_首审部/*; do
setfacl -m u:linshi:rwx "$d"
setfacl -m m:rwx "$d"
setfacl -d -m u:linshi:rwx "$d"
setfacl -d -m m:rwx "$d"
done
五、查看 & 排错必备命令
9️⃣ 看 ACL(一定要会)
getfacl DIR
🔟 判断“最终权限”(不看规则,看结果)
sudo -u linshi test -w DIR && echo 可写 || echo 不可写
sudo -u linshi test -x DIR && echo 可进 || echo 进不去
11️⃣ ACL 的“总闸门”(mask)
ACL 明明写了 rwx 但还是不行 → 99% 是 mask
setfacl -m m:rwx DIR
六、你这套环境的“固定规则模板”
📁 /ftp-data/worker-data 顶层
setfacl -m u:linshi:rx /ftp-data/worker-data
setfacl -m u:xxh:rwx /ftp-data/worker-data
setfacl -m m:rwx /ftp-data/worker-data
📁 普通部门目录(010~080、110 等)
setfacl -m u:linshi:rwx DIR
setfacl -m u:xxh:rwx DIR
setfacl -m m:rwx DIR
setfacl -d -m u:linshi:rwx DIR
setfacl -d -m u:xxh:rwx DIR
setfacl -d -m m:rwx DIR
📁 结构锁定目录(090、100)
# 本层
setfacl -m u:linshi:rx DIR
# 子层
for d in DIR/*; do
setfacl -m u:linshi:rwx "$d"
setfacl -m m:rwx "$d"
done
七、永远记住的三条“铁律”
1️⃣ 删文件 ≠ 文件权限,看的是父目录
2️⃣ FTP / SMB / shell 全都吃 ACL(系统级)
3️⃣ 能写但删不了,先查:mask / 父目录 / 客户端安全删除
八、你可以直接存成文件
建议你存一份:
vi /root/ACL_运维小抄.txt
把这整份贴进去,未来维护直接照抄。