目录权限不足导致访问拒绝的核心是“进不去、列不出、改不了”,需逐级检查路径中每级目录的x权限、属主属组匹配及r/w权限,同时排查挂载选项、selinux和不可变属性等高层拦截。

目录权限不足导致的访问拒绝,核心在于“进不去、列不出、改不了”——不是文件本身的问题,而是你连门都打不开。排查要从路径本身一层层往下看,而不是直接去动目标文件。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
确认你当前是谁、想进哪个目录
先执行:
whoami 和 id
看清楚你的 UID、主组 GID,以及是否在目标目录所属的组里。很多问题就出在你以为自己在某个组,其实没生效(比如刚加了组但没重新登录 shell)。
检查目录本身的权限和归属
用 ls -ld /path/to/dir 查目标目录,重点看三件事:
- 权限字段末尾有没有 x(比如 drwxr-xr-- 中的 x):没有 x 就不能 cd 进入,也不能访问里面任何文件
- 第三列(属主)和第四列(属组):你是不是属主?你所在的组是不是属组?
- 权限位中对应你身份的那一段(属主/属组/其他人)有没有 r(列出内容)和 w(创建或删除文件)
注意父目录链上的每一级
要进入 /a/b/c,你不仅需要 c 有 x,还需要 a 和 b 都有 x 权限。缺任意一级,cd /a/b/c 或 ls /a/b/c/file 都会报 Permission denied。
快速检查整条路径:
namei -l /a/b/c(逐级显示每个目录的权限与归属)
或手动运行:
ls -ld / /a /a/b /a/b/c
排除更高层拦截机制
即使权限和归属都对,仍可能被拦住:
- 检查挂载选项:mount | grep $(df /path/to/dir | tail -1 | awk '{print $1}'),确认不是 ro(只读挂载)
- 查 SELinux 状态:sestatus,若为 enforcing,可临时测一下:sudo setenforce 0
- 检查是否有不可变属性:lsattr /path/to/dir,带 i 标志的目录连 root 都无法修改










