首页/系统/Linux 运维命令速查/场景:Permission denied 权限排查四步

场景:Permission denied 权限排查四步

访问文件被拒时按序检查:目标本身权限 → 路径各级目录权限 → 进程身份 → SELinux/挂载属性,别只盯着目标文件。

Linux 运维命令速查系统更新于 2026-10-12
场景服务或用户访问文件报 Permission denied
目标定位权限链条断点
工具链namei → id/getfacl → lsattr → audit/sealert

第 1 步:目标与路径逐级检查

第 1 步:目标与路径逐级检查
ls -l /srv/app/data/report.csv
namei -l /srv/app/data/report.csv    # 逐级显示每层目录权限

第 2 步:核对进程实际身份与组

第 2 步:核对进程实际身份与组
ps -o user,group,pid,cmd -p $(pgrep -f app.jar | head -1)
id appuser
cat /proc/$(pgrep -f app.jar | head -1)/status | grep -E '^Uid|^Gid'

第 3 步:检查 ACL 与属性

第 3 步:检查 ACL 与属性
getfacl -p /srv/app/data/report.csv
lsattr /srv/app/data/report.csv 2>/dev/null

第 4 步:SELinux 场景

第 4 步:SELinux 场景
getenforce
ls -Z /srv/app/data/report.csv
audit2allow -w -a 2>/dev/null | tail    # 或看 /var/log/audit/audit.log 中 denials
目录权限是常见盲区:文件 644 但中间目录少了 x,同样进不去;namei -l 一屏定位。

易错点

  • SELinux enabled 时传统权限全对也可能被拒,dmesg/audit 日志里的 AVC denied 才是证据
  • NFS 挂载场景 root_squash 会把 root 映射为匿名用户,root 访问照样被拒,需查服务端导出选项

数据来源与参考

  • man 1 namei(util-linux)
  • man 1 getfacl
  • RHEL 文档:SELinux 故障排查

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌