chmod 与 chown 入门:看懂 Linux 文件权限,别再随手 777

举报
yd_256733395 发表于 2026/11/09 11:38:16 2026/11/09
【摘要】 部署时遇到 Permission denied,很多人的第一反应是 chmod -R 777,报错确实消失了,但任何用户都能改写甚至替换这些文件。其实 Linux 权限只有几条规则,看懂之后,大多数问题用一两条精确的命令就能解决。下面的文件名、用户名和输出都是人为构造的小样本,示例输出只由这些假设推导,不代表任何真实机器的实测结果。一、先读懂 ls -l 的那一串字符假设目录里有一个脚本和一...

部署时遇到 Permission denied,很多人的第一反应是 chmod -R 777,报错确实消失了,但任何用户都能改写甚至替换这些文件。其实 Linux 权限只有几条规则,看懂之后,大多数问题用一两条精确的命令就能解决。下面的文件名、用户名和输出都是人为构造的小样本,示例输出只由这些假设推导,不代表任何真实机器的实测结果。

一、先读懂 ls -l 的那一串字符

假设目录里有一个脚本和一个配置文件,执行 ls -l 后看到下面两行(示例):

-rwxr-x--- 1 alice dev  210 Nov  9 10:00 deploy.sh
-rw-r--r-- 1 alice dev  120 Nov  9 10:00 app.conf

第一个字符表示类型,- 是普通文件,d 是目录。后面九个字符每三个一组,依次对应属主(u)、属组(g)和其他人(o)。r 是读,w 是写,x 是执行。第三、四列 alice 和 dev 就是属主和属组。所以 deploy.sh 的含义是:alice 可读写执行,dev 组成员可读和执行,其他人什么都不能做。

用 stat 可以直接看到数字形式,便于核对:

stat -c '%a %U:%G %n' deploy.sh app.conf

按上面的假设,输出应为 750 alice:dev deploy.sh 和 644 alice:dev app.conf 两行。

二、chmod:数字写法和符号写法

数字写法里 r=4、w=2、x=1,每组相加得到一位数字。rw- 是 6,r-x 是 5,r-- 是 4。因此:

chmod 640 app.conf     # 属主读写,组只读,其他人无权限
chmod u+x deploy.sh    # 只给属主加执行权限,其余位不变
chmod o-r app.conf     # 去掉其他人的读权限

符号写法的好处是只改动你点名的那一位,不会顺手把其他位覆盖掉,适合“只想补一个 x”这类场景。

需要特别注意目录:目录的 x 表示“能否进入并访问其中的文件”,r 表示“能否列出文件名”。一个目录只有 r 没有 x,ls 能看到名字,却打不开里面的文件。所以网站目录常见的组合是目录 755、文件 644,而不是全部 777。

三、chown:改属主和属组

权限位决定“这一类人能做什么”,chown 决定“这个文件归谁”。修改属主通常需要 root 权限:

sudo chown www-data:www-data /srv/site/upload
sudo chown -R alice:dev /srv/app

冒号前是用户,冒号后是组;只写 :dev 表示只改组。-R 会递归处理整个目录,执行前先确认路径没有写错,尤其不要对 / 或家目录误操作。

四、为什么不要随手 777

777 意味着机器上任何账号、任何被攻破的进程都能写入这个文件或目录。对 Web 上传目录来说,这可能让别人放进可执行脚本。更好的排查顺序是:

  • 先用 ps 或服务配置确认程序以哪个用户运行,比如 www-data。
  • 用 ls -ld 逐级检查路径上每个目录是否有 x 权限。
  • 优先用 chown 把文件交给正确的用户或组,再给最小够用的权限。
  • 批量修正时区分文件和目录,例如下面两条:
find /srv/site -type d -exec chmod 755 {} +
find /srv/site -type f -exec chmod 644 {} +

新建文件的默认权限由 umask 决定,常见的 022 会让新文件是 644、新目录是 755。权限问题解决后,记录下你改了哪些路径和数值,下次部署就能照着复现,而不是再碰一次运气。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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