Linux目录权限异常:同权限目录为何访问权限不同?
为什么权限相同的两个目录,user_1能进lg-c2却进不去lg-x1?
哈哈,这个问题我之前排查过好多次!看起来两个目录的权限完全一致,但user_1就是没法访问lg-x1,核心原因根本不在目录本身的权限设置——问题出在它的父目录权限上!
先搞懂Linux访问目录的核心逻辑
要成功进入一个目录,你需要满足两个关键条件:
- 目标目录本身给你分配了执行权限(x位)
- 从根目录到目标目录的每一层父目录,都给你分配了执行权限(x位)
这里要划重点:父目录的执行权限不是让你修改它,而是让你“穿过”它访问里面的内容——哪怕你对父目录没有读写权限,只要有x权限,就能进入它下面的子目录。
回到你的问题
你看到的drwxrw-rw-只是lg-x1和lg-c2自身的权限,但它们所在的父目录权限大概率不一样:
- lg-c2的父目录给了user_1(或者users组)执行权限,所以user_1能顺利“穿过”父目录进入lg-c2
- lg-x1的父目录没有给user_1执行权限(比如父目录权限是
drwxr--r--,只有owner有x权限),哪怕lg-x1自身权限全开,user_1也没法“到达”它,自然会提示Permission denied
而root用户拥有所有权限,不受目录权限限制,所以能访问两个目录,这也完全符合你的观察。
快速验证方法
用user_1身份执行以下命令,对比两个目录的完整权限链:
namei -l /完整路径/lg-x1 namei -l /完整路径/lg-c2
这个命令会列出从根目录到目标目录的每一层目录权限,你一眼就能看到lg-x1的哪一层父目录缺失了user_1的执行权限。
内容的提问来源于stack exchange,提问作者user9712902
相关产品推荐
相关产品推荐

