服务器安全加固如何配置安全的 umask 默认掩码

作者:袖梨 2026-08-26

0027是生产服务器最平衡的umask起点,属主全权、组可读可进、其他人无权;需同时配置/etc/login.defs中UMASK 027和PAM的pam_umask.so模块,再通过新建终端实测touch与mkdir权限验证是否生效。

直接设为 0027 是生产服务器最平衡的安全起点——属主全权、组可读可进、其他人彻底无权,既满足运维协作,又堵住敏感文件(如配置、日志、密钥)被意外读取的漏洞。

优先改 /etc/login.defs 确保新用户继承

这是对所有新建用户生效的标准路径:

  1. sudo nano /etc/login.defs 打开文件
  2. 找到 UMASK 行(通常在中间位置),取消注释并设为:

    UMASK 027

  3. 保存后,后续创建的用户自动获得该掩码;已有用户需重新登录才生效

必须补上 PAM 配置覆盖 su/sudo/cron 场景

仅改 /etc/login.defs 不够,su -sudo -i、定时任务等非标准登录常绕过它:

  1. Debian/Ubuntu 编辑 /etc/pam.d/common-session
  2. RHEL/CentOS 编辑 /etc/pam.d/system-auth
  3. 在文件末尾添加一行:

    session optional pam_umask.so umask=0027

  4. 确保 pam_umask.so 已安装(Ubuntu 需先 apt install libpam-umask

验证不能只看 umask 命令输出

值对不代表文件真按预期生成,必须实测:

  1. 新开一个完整终端(不是新 Tab,而是全新会话)
  2. 运行:

    umask && touch testf && mkdir testd && ls -ld testf testd

  3. 正确结果应为:

    -rw-r-----(文件 640)

    drwxr-x---(目录 750)

避开常见失效点

  1. 别只改 ~/.bashrc:它对 cron 脚本、su、图形登录基本无效
  2. 别写进 /etc/profile:PAM 会覆盖它,且加载时机不稳定
  3. 检查是否多处冲突:grep -r "umask" /etc/profile* /etc/bash* 2>/dev/null,删掉重复或过时设置
  4. zsh/fish 用户:确认改的是对应配置(如 ~/.zshrc),而非 bash 文件

不复杂但容易忽略。

相关文章

精彩推荐