服务公告

服务公告 > 技术教程 > Linux 用户与权限管理入门:chmod、chown 与 umask

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

发布时间:2026-10-10 16:11
## 三者各自管什么 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 看归属,再看权限位,最后逐级确认目录的执行位,基本都能当场定位。