linux系统默认umask为0022,生产环境宜设为0027或0077;需通过pam(如/etc/pam.d/common-session)全局配置session umask=0027,辅以shell级/etc/profile设置,并修复已有文件权限,最后验证生效。

Linux系统默认umask值通常为0022(用户新建文件权限为644,目录为755),但生产环境常需更严格控制,比如设为0027或0077,以限制组和其他用户访问敏感文件。设置需兼顾全局策略与用户隔离,不能只改一处就生效。
修改系统级默认umask(影响所有新登录用户)
全局umask主要通过PAM模块控制,推荐方式是编辑/etc/pam.d/common-session(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL/CentOS):
- 添加一行:session umask=0027(注意是session类型,不是auth或account)
- 若使用system-auth,建议加在session optional pam_umask.so行后,并确保pam_umask模块已安装(RHEL系默认含,Ubuntu需装libpam-umask包)
- 该设置对SSH、su、图形登录等所有PAM认证会话生效,比shell配置更可靠
补充Shell级umask(仅对交互式shell生效)
作为PAM的后备或调试手段,可在全局shell配置中设置,但不替代PAM方案:
- 编辑/etc/profile或/etc/bash.bashrc,追加:umask 0027
- 避免写在~/.bashrc里——这只能约束单个用户,无法统一基线
- 注意:如果PAM已设umask,shell里再设会被覆盖(取决于PAM配置顺序和control flags)
加固用户家目录及关键配置文件权限
umask只管“新建”文件,已有文件需主动修复权限基线:
- 批量修正家目录权限:chmod 700 /home/*(确保其他用户无法进入)
- 重置关键隐藏文件权限:chmod 600 ~/.bash_history ~/.ssh/authorized_keys ~/.gnupg/*;chmod 700 ~/.ssh ~/.gnupg
- 检查/etc/passwd、/etc/group是否为644(通常安全),/etc/shadow、/etc/gshadow必须为600
验证与持续管控
设置后必须验证实际效果,且防止被覆盖:
- 新开SSH会话,运行umask确认输出为0027;创建测试文件touch test && ls -l test,应显示-rw-r-----
- 检查/etc/login.defs中的UMASK字段——此值仅被useradd等工具用于设置新用户的初始umask,不影响运行中会话,可设为077增强新账号安全性
- 在安全合规场景下,建议将umask策略纳入配置管理(如Ansible的pam_module模块或file模板),避免手工遗漏











