umask 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于用户与权限命令族(见用户与权限命令族)。它决定了你新建的文件"天生"是什么权限。
umask(user file-creation mask,权限掩码)决定新建文件和目录时屏蔽掉哪些权限位。它是个"减法":最终权限 = 默认权限 − umask。
一、原理与计算
bash
umask # 查看当前掩码,如 022
# 目录默认权限 777,文件默认 666(文件天生无 x)
# 实际 = 默认 - umask
# 目录:777 - 022 = 755
# 文件:666 - 022 = 644关键点:文件默认 666(无执行位),因为新建的普通文件不该自动可执行;目录需要 x 才能进,所以默认 777。umask 是从这上面"扣掉"相应位。
022是最常见值——扣掉组和其他的写位,得到755/644。
二、临时与永久设置
bash
umask 027 # 当前 shell 临时改(新文件变 640 / 目录 750)
umask -S # 符号显示:u=rwx,g=rx,o=
# 永久:写进 ~/.bashrc 或 /etc/profile
echo "umask 027" >> ~/.bashrc命令行
umask只影响当前会话。要永久生效写进 shell 配置(用户级~/.bashrc,系统级/etc/profile)。umask -S用符号(rwx)显示,比数字直观。
三、为什么新文件没有 x 权限
bash
touch new.sh # 默认 644,没有 x
# 想执行得手动 chmod +x(见 [chmod](/linux/cmd/chmod.md))这是 umask + 文件默认 666 的合力结果:即便 umask 是 000,新建文件也是 666(无 x)。安全设计——防止下载的文件自动可执行。需要执行必须显式
chmod +x。
四、实战:共享目录放宽
bash
umask 002 # 组内可写:新文件 664、目录 775,适合团队协作团队共享目录常设
umask 002,让同组人新建的文件互相可写。注意 umask 是进程属性,守护进程/服务有自己的 umask(可能更严,如 022 甚至 077),影响它写出的文件权限。
一句话总结
umask = 新建文件默认权限掩码(减法:实际 = 默认 − umask):目录默认 777、文件默认 666(天生无 x,需 chmod +x);022 最常见得 755/644,002 适合团队(664/775);命令行改只管当前 shell,永久写 ~/.bashrc;umask -S 符号显示。