关键不是撤销权限,而是添加显式拒绝规则:用setfacl -m u:用户名:---覆盖所有访问;需确认文件系统启用acl、mask足够宽、并配合-d设默认acl防绕过。

在 Linux 中通过 ACL 限制特定用户访问,关键不是删权限,而是加一条“明确拒绝”的规则——用 setfacl -m u:用户名:--- 直接覆盖所有访问可能。
确认前提:文件系统必须支持 ACL
ACL 不是默认全开的功能,得先验证是否启用:
- 运行
mount | grep "$(df . | awk 'NR==2 {print $1}')" | grep acl,有输出说明已启用 - 若无输出,检查
/etc/fstab对应挂载项是否含acl选项(如defaults,acl),再执行sudo mount -o remount /mount/point - 确保你对目标目录有写权限(通常需 root 或属主身份)
执行禁止:添加显式拒绝规则
假设要禁止用户 bob 访问 /srv/shared:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 仅当前目录:
sudo setfacl -m u:bob:--- /srv/shared - 递归禁止(含所有子项):
sudo setfacl -Rm u:bob:--- /srv/shared - 验证效果:
getfacl /srv/shared应显示user:bob:---这一行
注意:即使 bob 属于该目录的属组且组权限是 r-x,这条 user:bob:--- 仍会生效——ACL 用户条目优先级高于传统组权限。
防止绕过:设置默认 ACL 控制新建内容
只设当前权限,无法阻止用户未来在该目录下创建的文件或子目录被访问。长期管控必须加默认规则:
- 添加默认拒绝:
sudo setfacl -d -m u:bob:--- /srv/shared - 此后在此目录中新建的任何文件或子目录,都会自动继承
user:bob:--- - 默认 ACL 不影响已有内容;如需同步历史项,仍需补上
-R
排查常见失效原因
如果禁止后用户仍能访问,重点检查三点:
-
mask 掩码太窄:运行
getfacl /srv/shared查看mask::值。若为r--,即使写了u:bob:---,也可能被截断。修复命令:sudo setfacl --mask -m mask::rwx /srv/shared -
存在其他组权限路径:确认 bob 是否属于更宽松的组(如
wheel、sudo),必要时一并限制该组权限或移出用户 - 未递归或未设默认规则:只改了目录本身,但子目录/新文件没限制,就会被绕过










