← 返回所有文章

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,把同一组权限相加,就得到对应数字。

数字权限含义
7rwx读、写、执行
6rw-读、写
5r-x读、执行
4r–只读

因此,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 / 感谢阅读继续探索 ↗

搜索笔记

在全部文章中搜索