umask 是什么
umask(权限掩码)决定新建文件与目录的默认权限,规则是「最大权限减去掩码」。文件基准 666、目录基准 777,掩码 022 得到 644/755,掩码 027 得到 640/750。它只影响新建对象,对已有文件无效。安全基线与等保访问控制条款常要求设为 027,落地时要同时改 shell 启动脚本与登录类程序配置,两处口径一致才真正生效。
基本信息
| 适用平台 | 全部 Linux 发行版(openEuler、麒麟、UOS、RHEL) |
|---|---|
| 查看当前值 | umask,输出形如 0022 |
| 临时修改 | umask 027,仅对当前 shell 及子进程有效 |
| 全局配置 | /etc/profile.d/umask.sh 与 /etc/login.defs 的 UMASK |
| 生效范围 | 只影响新建文件与目录,不改动已有对象 |
典型使用场景
- 安全基线整改:把默认掩码从 022 收紧到 027,禁止其他用户读取新建文件
- 共享目录控制:同组协作用 027,同组可读写、其他人完全不可见
- 敏感账户加固:root 与数据库账户用 077,新建文件仅属主可见
- 应用部署核对:排查应用生成的日志与配置文件权限过宽问题
- 交付验收:批量确认各机器掩码一致,避免各不相同导致审计口径不统一
查看、验证与全局配置
查看、验证与全局配置
umask # 查看当前值(如 0022)
umask 027 # 仅在当前 shell 生效
touch /tmp/umask_test && ls -l /tmp/umask_test # 验证:应为 640
mkdir /tmp/umask_dir && ls -ld /tmp/umask_dir # 目录应为 750
# 全局配置(两处都要对齐)
echo 'umask 027' > /etc/profile.d/umask.sh
sed -i 's/^UMASK.*/UMASK 027/' /etc/login.defs
grep -r umask /etc/profile /etc/bashrc /etc/login.defs # 确认没有后来的覆盖常见取值与产物权限
| umask | 新建文件 | 新建目录 | 典型场景 |
|---|---|---|---|
| 022 | 644 | 755 | 传统默认,同组可写其他人可读 |
| 027 | 640 | 750 | 加固基线常用,其他人不可读 |
| 077 | 600 | 700 | 敏感账户,仅属主可见 |
| 002 | 664 | 775 | 同组协作共享目录,需谨慎评估 |
服务与守护进程不读 /etc/profile:systemd 单元可用 UMask= 指定,sshd 可用 /etc/ssh/sshd_config 的 UMask 控制登录会话,只改 shell 配置会漏掉这些进程。
收紧掩码前先确认业务是否需要同组或其他用户读取新建文件;上传目录、共享目录改严后可能直接导致业务报权限拒绝。