Linux 文件权限详解:chmod、chown、umask 到底怎么用?
2026/5/26 16:27:53 网站建设 项目流程

Linux 文件权限详解:chmod、chown、umask 到底怎么用?

1. 前言

Linux 是多用户操作系统。一个文件能不能被读取、修改、执行,不只取决于文件本身,还取决于当前用户是谁、文件属于谁、文件属于哪个用户组,以及权限位如何设置。

本文围绕 Linux 权限模型展开,重点讲清楚三个命令:

chmod# 修改权限chown# 修改文件所属用户/用户组umask# 控制新建文件的默认权限

2. 如何查看文件权限

使用:

ls-l

示例:

-rwxr-xr--1root root1024May1810:00 run.sh

重点看第一段:

-rwxr-xr--

它可以拆成四部分:

- rwx r-x r-- | | | | | | | └── 其他用户权限 | | └──────── 所属用户组权限 | └────────────── 文件所属用户权限 └─────────────────── 文件类型

第一位表示文件类型:

符号含义
-普通文件
d目录
l软链接

后面 9 位是权限位,每 3 位一组。


3. rwx 分别表示什么

对于普通文件:

权限含义
r可以读取文件内容
w可以修改文件内容
x可以执行文件

对于目录:

权限含义
r可以查看目录下的文件名
w可以创建、删除、重命名目录内文件
x可以进入目录,访问目录内文件

目录的x权限非常重要。
如果目录没有x权限,即使有r权限,也可能无法进入。


4. chmod:修改权限

权限可以用数字表示:

权限数字
r4
w2
x1

三者相加得到一组权限:

数字权限
7rwx
6rw-
5r-x
4r–

常见权限:

chmod755run.sh# rwxr-xr-x,脚本/目录常用chmod644file.txt# rw-r--r--,普通文件常用chmod600id_rsa# rw-------,私钥常用chmod700scripts# rwx------,私有目录常用

也可以使用符号方式:

chmod+x run.sh# 给所有人增加执行权限chmodu+x run.sh# 只给所属用户增加执行权限chmodg-w file.txt# 去掉用户组写权限chmodo-r secret.txt# 去掉其他用户读权限

递归修改目录:

chmod-R755project

但不要随便递归chmod 777,这会让所有用户都能读、写、执行,风险很高。


5. chown:修改所属用户和用户组

查看文件所属用户和用户组:

ls-lfile.txt

示例:

-rw-r--r--1root root100file.txt

两个root分别表示:

所属用户:root 所属用户组:root

修改所属用户:

sudochownuser1 file.txt

同时修改用户和用户组:

sudochownuser1:user1 file.txt

递归修改目录:

sudochown-Rnginx:nginx /var/www/html

常见场景:

sudochown-Rmysql:mysql /var/lib/mysqlsudochown-Rwww-data:www-data /var/www/htmlsudochownuser:user ~/.ssh/id_rsa

6. umask:控制默认权限

umask决定新建文件和目录的默认权限。

查看当前 umask:

umask

常见结果:

0022

文件默认最大权限是666,目录默认最大权限是777

如果 umask 是022

新建文件权限:666 - 022 = 644 新建目录权限:777 - 022 = 755

所以常见默认结果是:

-rw-r--r-- file.txt drwxr-xr-xdir

临时修改 umask:

umask027

这会让新建文件和目录权限更严格。


7. 为什么不建议 chmod 777

chmod 777表示:

所有用户都能读、写、执行

它虽然能快速解决“Permission denied”,但安全风险很大:

  • Web 目录可能被写入后门文件;
  • 配置文件可能被普通用户修改;
  • 脚本可能被替换;
  • SSH 私钥权限过宽会被拒绝使用。

正确思路不是直接 777,而是先判断:

谁需要访问? 需要读、写还是执行? 文件所属用户和用户组是否正确?

8. 常见问题排查

8.1 脚本无法执行

./run.sh

报错:

Permission denied

检查权限:

ls-lrun.sh

添加执行权限:

chmod+x run.sh

8.2 无法写入目录

查看目录权限:

ls-ld/path/to/dir

目录写入通常需要:

w + x

只有写权限不够,还需要执行权限才能进入和操作目录。


8.3 程序没有权限读配置文件

检查文件所属用户:

ls-lconfig.yaml

如果服务以nginx用户运行,但文件只允许root读取,就会失败。
可以调整为:

sudochownroot:nginx config.yamlsudochmod640config.yaml

9. 小结

Linux 权限模型可以总结为:

chmod:改权限 chown:改归属 umask:控制默认权限

常用命令回顾:

ls-lls-lddirchmod755run.shchmod+x run.shchownuser:user file.txtchown-Rnginx:nginx /var/www/htmlumaskumask027

理解rwx、用户、用户组、umask 之后,大多数 Linux 权限问题都可以自己定位。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询