Linux 文件权限怎么看?chmod 报错三步查

Permission denied 基本不是玄学:先看 Linux 文件权限本身,再查属主、路径上每一级目录和挂载选项,四步之内九成能定位。下面按「读懂 → 定位 → 修 → 避坑」的顺序走,命令都可以直接复制。

一、读懂 Linux 文件权限:ls -l 那串字符怎么看

在文件所在目录跑 ls -l app.log,会看到类似这样一行:

-rw-r--r-- 1 deploy deploy 2048 Oct 30 10:00 app.log

  • 第 1 位是类型:- 普通文件、d 目录、l 软链接。
  • 后面 9 位分三组,每组 3 位,依次是属主 u、属组 g、其他人 o。
  • 每组里 r 读=4、w 写=2、x 执行=1,相加得到的数字就是 chmod 后面用的那个数。

所以 -rw-r--r-- 等于 644:属主能读能写,同组和其他人只能读。

目录的 rwx 是另一套含义

目录的 r 是能不能列出里面有哪些文件,x 是能不能进得去,w 是能不能在里面新建或删除文件。只有 r 没有 x,ls 能看见名字,但 cd 进去和读里面的文件都会被拒。

二、定位:四类报错对应四种权限原因

对照报错找原因,别一上来就 chmod 777。

  1. cat: xxx: Permission denied,读文件被拒:文件对当前用户没有 r,或者路径上某一级目录没有 x。
  1. cd: xxx: Permission denied:目录缺 x,跟里面文件的权限无关。
  1. bash: ./run.sh: Permission denied:脚本缺 x,执行 chmod u+x run.sh 就行,和脚本内容没关系。
  1. 上传或写文件失败:目标目录对运行服务的用户没有 w,常见于 web 目录属主还是 root。

先确认自己是谁:whoami 看用户名,id 还会列出所属组,属组那三位权限对不对得上,就看这个输出。

三、改 Linux 文件权限:三种做法,代价不一样

  1. 只给自己加执行:chmod u+x run.sh。影响面最小,改完 ls -l 会看到变成 -rwxr--r--。
  1. 按数字一次定死:普通文件用 chmod 644,目录用 chmod 755,脚本也用 chmod 755。这组值覆盖大多数场景。
  1. 属主不对就改属主:sudo chown -R www-data:www-data /var/www/app。这比放开权限安全,多人服务器上尤其该先做这一步。

三个常见坑:

  • chmod -R 777 会把私钥、配置、上传目录一起开放。团队协作优先把属组设成共同组,再给 775。
  • 加 -R 之前先用 ls -l 看清目录里有什么,改错目录回滚很费劲。
  • 新建文件的默认权限由 umask 决定,常见的 022 对应文件 644、目录 755,改不动权限时先 umask 看一眼。

四、改完还报错,查这 3 个地方

  • 父目录链:/home/a/b/c 里任意一级缺 x,后面文件权限给满也没用。用 namei -l /path/to/file 一次列出每一级的权限。
  • 挂载选项:U 盘、数据盘可能以 noexec 挂载,脚本加了 x 也跑不起来,mount | grep 挂载点 看有没有这个参数。
  • 强制访问控制:CentOS、RHEL 上的 SELinux,Ubuntu 上的 AppArmor,会在普通权限之外再拦一次。getenforce 显示 Enforcing 时,去看 sudo tail /var/log/audit/audit.log 里的拒绝记录。

常见问题(FAQ)

chmod 777 了还是 Permission denied,为什么?

通常不是文件权限本身的问题,而是父目录缺 x、分区只读或带 noexec 挂载,或者被 SELinux、AppArmor 拦下。用 namei -l 路径 逐级看,再查挂载参数和安全模块日志。

755 和 644 分别代表什么?

755 是属主 rwx、属组 r-x、其他人 r-x,目录和可执行脚本常用;644 是属主 rw-、其他人 r–,文本、配置、网页文件常用。记住目录给 755、普通文件给 644 就不会出大错。

怎么只让自己能改,别人只能看?

文件用 chmod 644、目录用 chmod 755,属主设成自己:chown 你的用户名 文件名。要多人协作就把属组改成共同组,再放宽到 664 和 775。

目录权限里的 x 到底有什么用?

x 是通行证。没有它,即使有 r 也只能看到文件名,进不去、读不了里面的文件、也执行不了里面的程序。所以给目录别只给 r。

遇到权限问题,把 Linux 文件权限当成三层来查——文件本身、路径上每一级目录、挂载与安全模块,按顺序排一遍,比反复试数字快得多。

最后更新:2026-10-30(命令参数与各发行版默认策略可能调整,请以官方文档为准)。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...