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修改权限权限可以用数字表示权限数字r4w2x1三者相加得到一组权限数字权限7rwx6rw-5r-x4r–常见权限chmod755run.sh# rwxr-xr-x脚本/目录常用chmod644file.txt# rw-r--r--普通文件常用chmod600id_rsa# rw-------私钥常用chmod700scripts# rwx------私有目录常用也可以使用符号方式chmodx run.sh# 给所有人增加执行权限chmodux 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_rsa6. umask控制默认权限umask决定新建文件和目录的默认权限。查看当前 umaskumask常见结果0022文件默认最大权限是666目录默认最大权限是777。如果 umask 是022新建文件权限666 - 022 644 新建目录权限777 - 022 755所以常见默认结果是-rw-r--r-- file.txt drwxr-xr-xdir临时修改 umaskumask027这会让新建文件和目录权限更严格。7. 为什么不建议 chmod 777chmod 777表示所有用户都能读、写、执行它虽然能快速解决“Permission denied”但安全风险很大Web 目录可能被写入后门文件配置文件可能被普通用户修改脚本可能被替换SSH 私钥权限过宽会被拒绝使用。正确思路不是直接 777而是先判断谁需要访问 需要读、写还是执行 文件所属用户和用户组是否正确8. 常见问题排查8.1 脚本无法执行./run.sh报错Permission denied检查权限ls-lrun.sh添加执行权限chmodx run.sh8.2 无法写入目录查看目录权限ls-ld/path/to/dir目录写入通常需要w x只有写权限不够还需要执行权限才能进入和操作目录。8.3 程序没有权限读配置文件检查文件所属用户ls-lconfig.yaml如果服务以nginx用户运行但文件只允许root读取就会失败。可以调整为sudochownroot:nginx config.yamlsudochmod640config.yaml9. 小结Linux 权限模型可以总结为chmod改权限 chown改归属 umask控制默认权限常用命令回顾ls-lls-lddirchmod755run.shchmodx run.shchownuser:user file.txtchown-Rnginx:nginx /var/www/htmlumaskumask027理解rwx、用户、用户组、umask 之后大多数 Linux 权限问题都可以自己定位。
Linux 文件权限详解:chmod、chown、umask 到底怎么用?
发布时间:2026/5/26 16:28:09
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修改权限权限可以用数字表示权限数字r4w2x1三者相加得到一组权限数字权限7rwx6rw-5r-x4r–常见权限chmod755run.sh# rwxr-xr-x脚本/目录常用chmod644file.txt# rw-r--r--普通文件常用chmod600id_rsa# rw-------私钥常用chmod700scripts# rwx------私有目录常用也可以使用符号方式chmodx run.sh# 给所有人增加执行权限chmodux 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_rsa6. umask控制默认权限umask决定新建文件和目录的默认权限。查看当前 umaskumask常见结果0022文件默认最大权限是666目录默认最大权限是777。如果 umask 是022新建文件权限666 - 022 644 新建目录权限777 - 022 755所以常见默认结果是-rw-r--r-- file.txt drwxr-xr-xdir临时修改 umaskumask027这会让新建文件和目录权限更严格。7. 为什么不建议 chmod 777chmod 777表示所有用户都能读、写、执行它虽然能快速解决“Permission denied”但安全风险很大Web 目录可能被写入后门文件配置文件可能被普通用户修改脚本可能被替换SSH 私钥权限过宽会被拒绝使用。正确思路不是直接 777而是先判断谁需要访问 需要读、写还是执行 文件所属用户和用户组是否正确8. 常见问题排查8.1 脚本无法执行./run.sh报错Permission denied检查权限ls-lrun.sh添加执行权限chmodx run.sh8.2 无法写入目录查看目录权限ls-ld/path/to/dir目录写入通常需要w x只有写权限不够还需要执行权限才能进入和操作目录。8.3 程序没有权限读配置文件检查文件所属用户ls-lconfig.yaml如果服务以nginx用户运行但文件只允许root读取就会失败。可以调整为sudochownroot:nginx config.yamlsudochmod640config.yaml9. 小结Linux 权限模型可以总结为chmod改权限 chown改归属 umask控制默认权限常用命令回顾ls-lls-lddirchmod755run.shchmodx run.shchownuser:user file.txtchown-Rnginx:nginx /var/www/htmlumaskumask027理解rwx、用户、用户组、umask 之后大多数 Linux 权限问题都可以自己定位。