为何Unix系统中已设文件777权限,普通用户仍无法读取该文件?
问题原因解析
核心逻辑:Unix文件系统的目录权限优先级
在Unix类系统中,要访问一个文件,必须先拥有其所在父目录的「可执行权限(x)」——这个权限的作用是允许用户遍历该目录,定位到目标文件。
操作过程的权限矛盾复盘
- 初始操作后,
test目录被设置为700权限,仅root用户能进入该目录、查看或操作其中文件:sudo su mkdir test touch test/x.txt chmod -R 700 test exit - 后续你仅修改了
test/x.txt的权限为777,但**test目录的700权限未做任何变更**:sudo su chmod 777 test/x.txt exit - 普通用户执行
cat test/x.txt时,系统会先尝试进入test目录定位文件,但由于该目录对普通用户没有可执行权限,直接返回permission denied,根本不会去检查x.txt本身的权限。
验证与解决方法
- 验证:普通用户尝试进入
test目录会直接失败:cd test # 输出:bash: cd: test: Permission denied - 解决:如果需要让普通用户访问
x.txt,需给test目录添加可执行权限:
此时普通用户即可正常访问sudo chmod 755 testtest/x.txt。
内容的提问来源于stack exchange,提问作者Tal Rofe
相关产品推荐
相关产品推荐

