Linux umask全局安全设置核心是屏蔽不必要权限而非加锁,生产环境推荐027(组可读执行、其他无权)或077(仅属主可访问),需优先配置/etc/login.defs中UMASK值,并通过PAM在common-session或system-auth中启用pam_umask.so实现全路径生效,最后验证新建文件权限并修复已有文件权限。
Linux umask 全局安全设置,核心是统一屏蔽不必要权限,而不是给文件“加锁”。生产环境推荐用 027 或 077,前者适合需组内协作但隔离外部的场景,后者用于密钥、数据库等高敏账户,确保其他用户完全无访问权。
优先改 /etc/login.defs 控制新用户默认值
该文件决定 useradd 创建新用户时的初始 umask,影响所有未来账号:
- 编辑 /etc/login.defs,确保存在未注释行:UMASK 027(或 UMASK 077)
- 此设置只对新创建用户生效;已有用户需重新登录才继承
- 配合 USERGROUPS_ENAB yes,保障私有用户组机制正常运作
必须配 PAM 实现全路径生效
/etc/login.defs 不覆盖 su、sudo、cron 等非标准登录方式,PAM 才是真正兜底方案:
- Debian/Ubuntu:编辑 /etc/pam.d/common-session,追加
session optional pam_umask.so umask=0027
- RHEL/CentOS:编辑 /etc/pam.d/system-auth,在 session 段添加同上行
- Ubuntu 若提示模块缺失,先安装 libpam-umask 包
- PAM 设置对 systemd 用户服务、SSH、图形登录均有效,且影响 cron 脚本启动的子 shell
验证不能只看 umask 命令
运行 umask 只显示当前会话值,不代表新建文件真实权限。必须实测创建行为:
- 新开干净终端(如 SSH 重连),执行:
umask && touch testf && mkdir testd && ls -ld testf testd
- umask 027 应得:
−rw−r−−−−(640)和 drwxr−x−−−(750) - umask 077 应得:
−rw−−−−−−(600)和 drwx−−−−−−(700)
补漏:修复已有文件与家目录权限
umask 只管“新建”,已有敏感内容需手动收紧:
- 家目录本身:执行 chmod 700 /home/用户名
- 关键隐藏文件:
chmod 600 ~/.bash_history ~/.ssh/authorized_keys
chmod 700 ~/.ssh ~/.gnupg
- 系统关键文件:
/etc/shadow 和 /etc/gshadow 必须为 600;/etc/passwd、/etc/group 保持 644 即可