在Linux中判断文件是否可读最直接方式是test -r命令,通过退出码0/非0判定;也可用ls -l查看权限位第2、5、8位的r标志,但需结合父目录x权限及SELinux等安全模块综合判断。

在 Linux 中判断文件是否具有可读权限,最直接可靠的方式是使用 test 命令配合 -r 选项。
用 test -r 检查单个文件
该命令不输出任何内容,而是通过退出状态码返回结果:成功(返回 0)表示有读权限,失败(非 0)表示无读权限。
- test -r filename && echo "可读" || echo "不可读"
- 常用于脚本中,例如:if [ -r /etc/passwd ]; then echo "可以读取用户信息"; fi
查看权限字符串中的 r 标志
运行 ls -l filename,观察输出最左侧的 10 个字符:
- 第 2 位是属主(user)的读权限,为 r 表示可读;
- 第 5 位是属组(group)的读权限;
- 第 8 位是其他用户(others)的读权限。
注意:这仅反映权限位设置,不等于实际可读——还需考虑父目录执行权限(对目录而言)和 SELinux/AppArmor 等安全模块限制。
结合身份与权限层级综合判断
Linux 的“可读”取决于三重条件是否同时满足:
- 文件自身权限位包含对应角色的 r;
- 若检查的是普通文件,只需满足上一条;
- 若检查的是目录,则需该用户对路径中每一级父目录都具有 x(执行)权限,否则无法进入或列出内容。
用 stat 命令获取更清晰的权限解读
stat -c "%A %U:%G %n" filename 可显示符号权限、所有者/组及文件名,比 ls 更结构化;搭配 stat -c "%a" filename 还能获得八进制权限值(如 644),其中百位数字代表属主权限,十位代表属组,个位代表 others —— 只要对应位 ≥ 4,就说明有读权限。











