← 中文资源

简体中文版本

Linux: chmod 之后仍然 Permission denied

诊断 Linux 在 chmod 后仍 Permission denied:检查属主、父目录、挂载选项以及 SELinux 或 AppArmor。

阅读英文原文

症状

即便执行了 chmod +x,命令仍报 Permission denied。权限位看似正确,说明是另一层在拒绝访问。

诊断

检查整条路径与挂载选项:

namei -l /data/script.sh
mount | grep /data
dmesg | tail | grep -i denied

修复

修正属主与可遍历性,而非仅文件模式:

chown app:app /data/script.sh
chmod 750 /data/script.sh
chmod +x /data    # parent must be traversable

若挂载选项是障碍则去掉 noexec,并修复 MAC 标签而不是禁用 SELinux。

验证

运行脚本并成功执行。namei 确认文件及其每一级父目录均具执行权限,dmesg 无新的拒绝记录,证明访问现已成功。