Linux umask 修改

在 Linux 系统中,文件和目录的默认权限由 umask(用户文件创建掩码)控制,umask 是一个八进制数值,表示系统在创建新文件或目录时需要从默认权限中移除的权限位,理解并正确修改 umask,对于系统安全、文件共享以及开发环境配置至关重要,本文将详细介绍 umask 的工作原理、查看方法、修改方式及实际应用场景。
umask 的工作原理
Linux 系统中,文件和目录的默认权限是不同的:
- 文件默认权限为
666(即-rw-rw-rw-),但由于文件必须具备可执行权限才能运行,系统会自动移去执行位,实际默认权限为644(-rw-rw-r--)。 - 目录默认权限为
777(即rwxrwxrwx),因为目录必须具备执行权限才能访问,因此实际默认权限为755(rwxr-xr-x)。
umask 的作用是从默认权限中减去指定的权限位,umask 为 022 时:
- 新文件权限:
666 - 022 = 644(-rw-rw-r--) - 新目录权限:
777 - 022 = 755(rwxr-xr-x)
权限的减法并非简单的数学运算,而是按位相与取反,umask 的每一位对应权限的读(4)、写(2)、执行(1)位,通过二进制运算确定最终权限。
查看当前 umask
在终端中,直接输入 umask 命令即可查看当前用户的 umask 值:
umask
默认情况下,普通用户的 umask 为 002,root 用户的 umask 为 022,输出结果通常为三位八进制数,0022(前导零可省略)。
若需查看更详细的信息,可以使用 umask -S 以符号格式显示:
umask -S
umask -S 可能输出 u=rwx,g=rx,o=rx,表示用户权限为 rwx,组和其他用户权限为 rx。
修改 umask 的方法
临时修改(当前会话有效)
使用 umask 命令直接设置新的 umask 值,

umask 027
此修改仅对当前终端会话有效,关闭终端后恢复默认值。
永久修改(对所有会话生效)
(1)针对当前用户
编辑 ~/.bashrc 或 ~/.profile 文件,添加以下行:
umask 027
保存后执行 source ~/.bashrc 或重新登录生效。
(2)针对所有用户
编辑 /etc/profile 或 /etc/bashrc 文件,添加 umask 027,保存后执行 source /etc/profile 生效。
特定场景的 umask 设置
在脚本或服务中,可通过 umask 命令临时调整权限,在创建敏感文件前设置严格的 umask:
#!/bin/bash umask 077 # 新文件权限为 600,目录为 700 touch secret_file mkdir private_dir
umask 值与权限对照表
下表列出了常见 umask 值对应的文件和目录权限:
| umask 值 | 文件权限(644 – umask) | 目录权限(755 – umask) | 说明 |
|---|---|---|---|
0022 |
644 (-rw-r--r--) |
755 (rwxr-xr-x) |
默认(root 用户) |
0002 |
664 (-rw-rw-r--) |
775 (rwxrwxr-x) |
默认(普通用户) |
0077 |
600 (-rw-------) |
700 (rwx------) |
仅用户可访问 |
0027 |
640 (-rw-r----) |
750 (rwxr-x---) |
用户和组可访问 |
0037 |
630 (-rw----x) |
740 (rwx----x) |
用户可读写执行,组仅执行 |
umask 修改的注意事项
-
安全性:
- 过于宽松的 umask(如
0000)可能导致文件权限过高,存在安全风险。 - 过于严格的 umask(如
077)可能导致用户无法协作访问文件,需根据场景平衡。
- 过于宽松的 umask(如
-
目录与文件权限差异:
- 目录必须具备执行权限(
x),否则无法进入,umask 修改时需确保目录的执行位不被完全移除。
- 目录必须具备执行权限(
-
继承关系:

子进程会继承父进程的 umask 值,因此脚本或服务中的 umask 设置需谨慎,避免影响后续操作。
-
系统服务:
- 对于 Web 服务器(如 Apache、Nginx),通常需要设置 umask 为
002,以确保用户上传的文件组可写。
- 对于 Web 服务器(如 Apache、Nginx),通常需要设置 umask 为
实际应用场景
-
开发环境:
- 团队协作开发时,可设置 umask 为
002,确保新创建的文件组成员可读写。
- 团队协作开发时,可设置 umask 为
-
安全敏感场景:
- 存储密钥、配置文件等敏感数据时,设置 umask 为
077,限制访问权限。
- 存储密钥、配置文件等敏感数据时,设置 umask 为
-
自动化脚本:
在部署脚本中,临时修改 umask 以确保生成的目录或文件权限符合预期。
umask 是 Linux 权限管理的基础工具,通过合理设置 umask,可以有效控制文件和目录的默认权限,平衡安全性与协作需求,无论是临时调整还是永久修改,都需要结合实际场景谨慎操作,掌握 umask 的原理与使用方法,是提升 Linux 系统管理能力的重要一步,在日常运维中,建议定期检查 umask 设置,确保权限策略与业务需求一致。

















