TOOLBOX / 002//3 分钟阅读
Linux 文件权限:读懂 rwx 和 755
把用户、用户组和目录权限连起来,定位那些 Permission denied。
遇到 Permission denied,先别急着执行 chmod 777。文件归谁、进程以谁的身份运行,以及路径上的目录能否穿过,都会影响访问结果。
读懂一行 ls 输出
-rw-r----- 1 neo developers 1024 Oct 28 08:00 notes.txt
│└─┬┘└┬┘└┬┘ │ │
│ 拥有者 组 其他 拥有者 用户组
└ 文件类型
权限分为拥有者、所属组和其他用户三组。r、w、x 分别表示读、写和执行,但它们在普通文件与目录上的含义并不完全相同。
目录上的 x 很关键
对普通文件来说,r 允许读取内容,w 允许修改内容,x 表示可作为程序执行,还要结合文件格式等条件。
对目录来说,r 关联列出目录项,x 关联查找与穿越目录。即使某个文件本身可读,如果没有权限穿过上层目录,也可能无法访问它。
在通常的 Unix 权限模型下,删除文件主要依赖其所在目录的写与执行权限,还会受到 sticky bit 等规则影响,不能只看文件自身是否可写。
数字权限怎么计算
r = 4、w = 2、x = 1,把同一组权限相加,就得到对应数字。
| 数字 | 权限 | 含义 |
|---|---|---|
| 7 | rwx | 读、写、执行 |
| 6 | rw- | 读、写 |
| 5 | r-x | 读、执行 |
| 4 | r– | 只读 |
因此,755 是拥有者可读写执行,其余两组可读执行;644 是拥有者可读写,其余两组只读。静态网站中,目录常用 755、公开文件常用 644,但密钥、私有资料不能直接照搬。
按路径检查问题
# 确认自己的身份与用户组
id
# 查看目标文件的拥有者与权限
ls -l /var/www/example/index.html
# 查看路径上每一级目录
namei -l /var/www/example/index.html
最后还要确认服务进程身份。例如 Nginx 的工作进程通常使用受限账户,而不是运行检查命令的 root。
基础权限不是全部
ACL、只读挂载、不可变属性以及 SELinux 或 AppArmor 策略,都可能增加额外限制。若 rwx 看起来正确仍无法访问,就需要继续检查这些因素。
排障顺序可以是:身份 → 文件权限 → 上级目录 → 额外策略。先缩小问题,再修改真正需要的那一处。
继续阅读
EOF / 感谢阅读继续探索 ↗