首页/系统/Linux 运维命令速查/umask 控制新建文件默认权限

umask 控制新建文件默认权限

umask 定义新建文件/目录要被屏蔽掉的权限位:022 得到 644/755、027 得到 640/750;会话级设置,持久化写 /etc/profile 或 login.defs。

Linux 运维命令速查系统更新于 2026-10-13

umask 是什么

umask 是权限掩码,定义新建文件与目录时要从默认权限里去掉哪些位。系统给普通文件的默认上限是 666(新建文件不会自带执行位),目录是 777。掩码 022 对应文件 644、目录 755;掩码 027 对应 640 与 750。它只影响新建对象,不能收窄已有文件的权限,也不能放大默认上限。

基本信息

用途设定新建文件与目录的默认权限掩码
语法umask [掩码];umask -S 以符号形式显示;umask -p 输出可复用的命令形式
作用范围当前 shell 会话及其子进程;持久化可写 /etc/profile 或 login.defs
所属shell 内建命令,默认值来源之一是 /etc/login.defs 的 UMASK 项

典型使用场景

  • 收紧默认权限:服务器上把 umask 调到 027 或 077,减少新建文件的暴露面
  • 组内共享目录:协作目录用 002 让同组成员可写,配合 SGID 保持属组一致
  • 脚本内保护敏感产物:生成密钥、凭据前先设定严格掩码,避免出现短暂的宽权限窗口
  • 排查权限来源:新建文件权限不对时,先看当前 umask 是多少
  • 服务级统一:给应用设定固定的 UMask,避免手工执行与定时执行产生不一致的权限

查看、设定与验证

查看、设定与验证
umask                    # 以八进制显示当前值,如 0022
umask -S                 # 符号形式:u=rwx,g=rx,o=rx
umask 027                # 收紧:同组可读,其他人无权限
touch f1; mkdir d1; stat -c '%a %n' f1 d1    # 验证结果:文件 640、目录 750
echo 'umask 027' | sudo tee -a /etc/profile          # 对登录用户持久化
echo 'umask 027' | sudo tee /etc/profile.d/umask.sh  # 或放在 profile.d 下统一管理

脚本内保护敏感文件

脚本内保护敏感文件
#!/usr/bin/env bash
umask 077                       # 之后新建的文件只有属主可读写
printf 'secret\n' > /etc/app/credential.key
stat -c '%a %n' /etc/app/credential.key    # 期望 600
# systemd 服务可在单元里固定掩码
# [Service]
# UMask=0027

掩码取值与结果对照

umask新建文件新建目录典型用途
022644755多数发行版的默认值,同组与他人可读
027640750服务器收紧策略:他人完全无权限
077600700只给属主,适合存放密钥与私有数据
002664775组内协作目录,同组成员可写
写进 /etc/profile 只对登录 shell 生效,cron 与非交互 shell 通常不读它。要覆盖所有会话,可以改 /etc/login.defs 的 UMASK 项,或在 systemd 单元里设置 UMask=,两种方式管的是不同入口。
umask 只在新文件创建的那一刻起作用,不会修正已有文件的权限。发现历史文件权限过宽,要另外用 chmod 或 setfacl 处理。

易错点

  • 把 umask 与文件已有权限混淆:它只影响新建对象,对存量文件毫无作用
  • 把 umask 写到 /etc/profile 就以为全局生效:cron 任务与非登录 shell 不受影响,需要按入口分别配置
  • 生成敏感文件时不设掩码:默认 022 会让密钥类文件在创建初期对同组与他人可读,脚本里先 umask 077 再写
  • 与目录的 SGID 配合时忽略 umask 影响:组共享目录通常需要 002,用 022 会导致同组无法写入

数据来源与参考

  • man 1 umask(coreutils)
  • man 5 login.defs(UMASK 项)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌