首页 / 新闻资讯 / 技术教程

Linux 用户与权限管理入门:chmod、chown 与 umask

2026-10-10分类:技术教程顺云技术组

## 三者各自管什么

Linux 的权限体系围绕"谁对什么文件能做什么"展开。chmod 管权限位,决定读、写、执行三种能力归谁用;chown 管归属,把文件划给某个用户和用户组;umask 管默认值,决定新文件落盘时自带的权限。一个管"能做什么",一个管"文件是谁的",一个管"生下来什么样",分工理清之后,多数权限报错就能对号入座,不至于一把 777 拍上去完事。

## 权限位的读法

ls -l 输出最前面的十个字符是理解一切的起点:第一位是文件类型,剩下九位按"属主、属组、其他人"分成三组,每组三位分别对应读、写、执行。数字 755 表示属主可读写执行,其他人可读和进入;对目录而言,执行位意味着能否进入这个目录以及能否读到目录内的文件列表。umask 则是权限掩码:新建目录的初始权限是 777 减去 umask,新建文件是 666 减去 umask,所以常见的 022 掩码下,目录是 755,文件是 644;掩码改成 027,同组之外的人就连看都看不到了。

## 新网站目录的标准设置

Web 目录的常见做法是代码归部署用户所有,Web 进程以低权账号只读访问。先调整属主,再按类型统一权限位:

bash
chown -R deploy:deploy /var/www/example
find /var/www/example -type d -exec chmod 755 {} \;
find /var/www/example -type f -exec chmod 644 {} \;
chmod 640 /var/www/example/config.php

Nginx 之类的进程通常跑在独立低权账号下,靠"其他人可读"这一层拿到文件内容;从根目录到网站目录的每一级都需要执行位,否则 Web 侧会报 403。含数据库密码的配置文件单独收紧到 640,把属组设为 Web 进程所在组,兼顾安全与可读。需要写入的上传目录单独放,并把属主交给 Web 进程,避免为了上传把整站放开写权限。

## 常见错误

最常见的是用 777 解决一切报错。它确实能让提示立刻消失,但等于把文件的修改权交给了所有本地进程,一旦某个服务被攻破,攻击者可以直接改写代码植入后门。其次是忽略 umask 的存在,脚本生成的文件权限忽宽忽窄,排查半天才发现是不同会话的 umask 不同,打包解包、切换用户之后尤其明显。建议在部署脚本里显式写 umask 022,让行为可预期。在顺云的云服务器上遇到权限类问题时,先 ls -l 看归属,再看权限位,最后逐级确认目录的执行位,基本都能当场定位。

技术教程