Linux umask全局设置核心是屏蔽危险权限位而非赋予权限,生产推荐027(协作安全)或077(高敏隔离),须通过/etc/login.defs(控新用户)与PAM(/etc/pam.d/common-session或system-auth,覆su/sudo/cron)双层配置协同生效,并实测验证新建文件目录权限。

Linux 系统的 umask 全局设置,核心目标不是“给新文件加权限”,而是从源头屏蔽掉不该开放的权限位。生产环境推荐值为 027(协作安全)或 077(高敏隔离),且必须通过多层配置协同生效,单点修改极易失效。
优先改 /etc/login.defs:控制新用户初始 umask
该文件影响 useradd 创建的新用户,是账号生命周期起点的安全基线:
- 编辑 /etc/login.defs,确保存在未注释行:UMASK 027(或 077)
- 此设置对已有用户无效,仅作用于后续新建账户的首次登录会话
- 配合 USERGROUPS_ENAB yes 可启用私有用户组机制,避免组权限意外扩散
必须配 PAM:覆盖 su、sudo、cron 等非标准登录
/etc/login.defs 的配置在 su -、sudo -i、systemd --user 服务、crond 子 shell 中常不生效,PAM 是唯一可靠手段:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- Debian/Ubuntu:编辑 /etc/pam.d/common-session,追加
session optional pam_umask.so umask=0027 - RHEL/CentOS:编辑 /etc/pam.d/system-auth,在 session 段添加同上行
- 若系统无
pam_umask.so(如旧版 Ubuntu),需先安装libpam-umask包
验证不能只看 umask 命令
运行 umask 只显示当前 shell 的值,不代表真实创建行为。必须实测:
- 新开干净终端(如 SSH 重连),执行:
umask && touch testf && mkdir testd && ls -ld testf testd - umask 027 应得:
-rw-r-----(文件)和drwxr-x---(目录) - 非交互式场景(如 crond 脚本)默认不读 shell 配置,需在脚本开头显式写
umask 0027
避开常见失效陷阱
很多配置“写了却没用”,问题多出在加载路径和 shell 类型错配:
- 用户 shell 是 zsh 或 fish,却只改了 ~/.bashrc → 先查
echo $SHELL,再改对应文件(如 ~/.zshrc) - 只改了 ~/.bashrc,但登录用的是 ~/.bash_profile → 检查后者是否含
source ~/.bashrc,否则直接把 umask 行写进 ~/.bash_profile - 误以为 umask 000 能让文件带 x 权限 → 内核强制过滤普通文件的执行位,新建文件永远无 x,无论 umask 是多少

















