Linux 文件权限详解:chmod、chown 与常见权限问题

举报
GGBondHere 发表于 2026/10/23 10:52:25 2026/10/23
【摘要】 介绍 Linux 文件权限的基本概念,以及 chmod、chown、ls、stat 等常用命令,结合实际示例讲解数字权限、目录权限和 Permission denied 的排查方法。

前言

在 Linux 服务器上部署程序时,经常会遇到 Permission denied、脚本无法执行或者应用无法读取配置文件等问题。

这些情况很多都和文件权限有关。Linux 的基础权限模型并不复杂,搞清楚文件所有者、用户组和读写执行权限之后,大部分常见问题都能自己排查。

一、查看文件权限

先使用 ls 查看文件信息:

ls -l /opt/app/start.sh

假设输出如下:

-rwxr-x--- 1 root app 1024 Oct 23 10:00 start.sh

最前面的 -rwxr-x--- 就是文件类型和权限。

第一个字符 - 表示普通文件,d 则表示目录。后面每三个字符为一组:

  • rwx:文件所有者可读、可写、可执行。
  • r-x:所属用户组可读、可执行。
  • —:其他用户没有访问权限。

这里文件所有者是 root,所属组是 app。

二、chmod 数字权限怎么理解?

Linux 权限通常用三个数字表示,分别对应所有者、所属组和其他用户。

每种权限有一个数值:

  • r(读取)= 4
  • w(写入)= 2
  • x(执行)= 1

例如:

chmod 755 start.sh

755 对应 rwxr-xr-x,也就是所有者拥有全部权限,其他用户只能读取和执行。

再比如:

chmod 600 config.env

600 对应 rw-------,只有文件所有者可以读取和修改。

几个常见权限组合:

权限 含义 常见用途
644 所有者可读写,其他用户只读 普通文本文件
600 仅所有者可读写 私有配置文件
755 所有者可读写执行,其他用户可读执行 公共程序或目录
700 仅所有者拥有全部权限 私有目录或脚本

这些只是常见示例,实际权限还要根据应用的运行用户和访问需求确定。

三、目录权限和文件权限不完全一样

这是比较容易忽略的一点。

对于普通文件,r 表示读取内容,w 表示修改内容,x 表示允许作为程序执行(能否实际执行还取决于文件格式等条件)。

对于目录:

  • r:允许读取目录中的文件名列表。
  • w:允许修改目录项,例如创建或删除文件,通常还需要 x 权限。
  • x:允许搜索或进入目录,并访问已知名称的文件。

所以一个文件即使设置了 644,如果用户没有其上级目录的搜索权限,仍然可能无法访问。

另外,删除文件主要取决于所在目录的权限,并不是只看该文件有没有写权限。

四、修改文件所有者

如果文件权限看起来正常,但应用依然无法访问,可以检查文件属于哪个用户。

例如:

ls -l /opt/app/config.yaml

假设应用以 www-data 用户运行,而配置文件属于 root,且只有 root 可以读取,那么程序就可能报权限错误。

可以根据实际需求修改所有者:

sudo chown www-data:www-data /opt/app/config.yaml

这个命令同时修改文件所有者和所属组。

如果只需要让应用读取文件,也可以考虑通过合理的用户组权限解决,不一定非要把所有文件都改为应用用户所有。

五、不要直接使用 chmod -R 777

遇到权限报错时,有些人会直接执行:

chmod -R 777 /opt/app

这种方式虽然可能暂时解决问题,但会让所有用户对相关文件和目录拥有读、写、执行权限,存在不必要的安全风险。

而且它并没有解决真正的问题,比如程序运行用户不正确、目录归属错误或者挂载配置不合理。

更稳妥的方式是先确认应用实际以哪个用户运行,再根据需要调整相关文件或目录的权限。

例如,只希望某个脚本增加所有者执行权限,可以使用:

chmod u+x start.sh

相比直接设置 777,这样修改范围更小。

六、权限排查的常用命令

检查文件权限和所有者:

ls -l /opt/app/start.sh

检查路径上各级目录的权限:

namei -l /opt/app/start.sh

查看当前用户和所属用户组:

id

查看文件的详细权限信息:

stat /opt/app/start.sh

如果这些权限都没问题,还需要考虑 ACL、SELinux、AppArmor 或文件系统只读挂载等其他访问限制。

总结

Linux 文件权限排查可以遵循一个简单的顺序:

  1. 用 ls -l 确认文件权限、所有者和用户组。
  2. 用 id 检查应用实际运行用户的身份。
  3. 检查文件上级目录是否具有必要的访问权限。
  4. 使用 chmod 或 chown 做最小范围的修改。
  5. 避免直接给整个目录设置 777。

大多数权限问题并不需要复杂操作,关键是找到实际执行程序的用户,以及这个用户究竟缺少哪一项权限。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。