Skip to content
Linux 基础与服务器治理 · 第 2 篇 / 共 7 篇
领域运维与部署
专题Linux 与服务器治理专题
当前序列Linux 基础与服务器治理
阅读位置第 2 篇 / 共 7 篇当前专题第 1 个序列 / 共 4 个序列

chmod 和 chown 怎么用:Linux 权限排查别再一把梭 777

很多 Linux 权限事故,最开始都是一句话:

“先 chmod -R 777 试试。”

这类做法短期看像是把问题解决了,长期看往往是在把系统状态改乱,尤其在 /etc/var、SSH 相关目录上风险很大。

先说结论

权限排查时要先分清两件事:

  • 这是“权限位不对”的问题
  • 还是“所属用户 / 所属组不对”的问题

前者主要看 chmod,后者主要看 chown

一、先读懂 rwx 是什么意思

Linux 常见权限串长这样:

text
-rw-r--r--
drwxr-xr-x

可以拆成三组:

  • 第一组:所有者权限
  • 第二组:所属组权限
  • 第三组:其他用户权限

其中:

  • r 是读,数值是 4
  • w 是写,数值是 2
  • x 是执行,数值是 1

所以:

  • 755 = rwxr-xr-x
  • 644 = rw-r--r--

二、chmod 改的是“权限位”

数字方式

bash
chmod 755 deploy.sh
chmod 644 application.yml

常见经验:

  • 脚本文件经常用 755
  • 普通配置文件经常用 644

符号方式

bash
chmod u+x deploy.sh
chmod g-w config.txt
chmod o-r secret.txt

这种方式更适合做小范围精确调整。

三、chown 改的是“归属关系”

bash
chown nginx:nginx /data/www
chown -R app:app /opt/service

它回答的是:

  • 这个目录到底归谁
  • 哪个用户运行的进程应该有权限访问它

很多权限问题,本质不是 rwx 错了,而是目录虽然看起来有写权限,但运行进程根本不是那个用户。

四、为什么不能动不动就 777

777 的含义是:

  • 所有人都可读
  • 所有人都可写
  • 所有人都可执行

风险很明显:

  • 文件被误改的概率升高
  • 安全边界基本形同虚设
  • 某些系统目录权限被改坏后,服务可能直接异常

尤其不要对下面这些路径做粗暴递归授权:

  • /etc
  • /var
  • /usr
  • /root
  • SSH、Nginx、系统服务相关目录

如果真的出了问题,优先做的是:

  • 先确认运行用户是谁
  • 再确认目录归属和权限位
  • 最后只修改必要路径

五、几个高频场景

1. 脚本没有执行权限

bash
chmod +x start.sh

2. Nginx 或应用进程读不到目录

先看进程用户:

bash
ps -ef | grep nginx

再看目录归属:

bash
ls -ld /mydata/nginx /mydata/nginx/html

必要时:

bash
chown -R nginx:nginx /mydata/nginx/html
chmod 755 /mydata/nginx

3. 上传目录无法写入

通常要同时看:

  • 应用进程的运行用户
  • 目录归属
  • 上层目录是否有执行权限

六、排查权限问题时更稳妥的顺序

可以按这个顺序查:

  1. whoami 看当前用户
  2. ps -ef 看服务进程实际运行用户
  3. ls -lls -ld 看文件和目录权限
  4. 必要时再用 chmodchown

如果一开始就递归改权限,往往会丢掉最重要的现场信息。

七、一个容易忽略的点

目录的 x 权限不只是“执行”。

对于目录来说,它更接近“可进入、可遍历”。

这也是为什么有些目录即使看起来可读,仍然进不去。

一句话总结

chmod 改的是权限位,chown 改的是归属关系。

权限问题最怕的不是不会改,而是不分原因就直接 777。真正稳妥的做法,是先搞清楚谁在访问、访问哪个路径、缺的是哪一种权限。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读ln 怎么用:软链接和硬链接到底有什么区别适合把磁盘、权限、链接、systemd、日志和服务器初始化这些基础能力集中起来看。Linux 与服务器治理专题 · Linux 基础与服务器治理同一序列 · 顺着当前主线继续读Linux 开机自启动怎么做适合把磁盘、权限、链接、systemd、日志和服务器初始化这些基础能力集中起来看。Linux 与服务器治理专题 · Linux 基础与服务器治理同专题其他序列 · 共享标签:Linux、部署交付tcpdump 抓包时最常见的误区有哪些适合把 CPU、IO、网络连接、抓包和 cgroup 限制放在同一条 Linux 排查主线上看。Linux 与服务器治理专题 · Linux 系统资源与网络排查同专题其他序列 · 共享标签:Linux、部署交付cron 和 systemd timer 怎么选适合把进程、负载、I/O 和定时任务放在一起看。Linux 与服务器治理专题 · Linux 性能分析与系统时钟跨专题关联 · 共享标签:Linux、部署交付GitLab CI/CD 实战:Docker 构建镜像并通过 SSH 部署到服务器适合沿着流水线设计、自动部署、发布策略、数据库变更和多环境治理这条线往下读。CI/CD 与发布治理专题 · CI/CD 与发布治理跨专题关联 · 同场景:部署交付标签基数为什么会拖垮 Prometheus适合把 Prometheus、Grafana、标签治理和告警分级放在一起看。可观测性专题 · 指标与告警体系设计
继续阅读Linux 基础与服务器治理当前序列第 2 篇 / 共 7 篇当前专题第 1 个序列 / 共 4 个序列
往前看
上一篇df 和 du 到底有什么区别回到当前序列上一章上一序列AI 协作流程与治理从第 1 篇开始:把 AI 接进开发流程
往后看
下一篇ln 怎么用:软链接和硬链接到底有什么区别继续当前序列下一章下一序列Linux 性能分析与系统时钟从第 1 篇开始:进程、线程和 load average 怎么一起理解

把零散经验整理成可查、可复用、可持续更新的企业级知识门户