centos和ubuntu默认umask虽同为0022,但来源逻辑不同:centos主要依赖/etc/login.defs,ubuntu依赖pam或shell运行时机制;pam配置路径、模块安装要求及shell后备策略均存在实质性差异,不可简单等同。

CentOS 和 Ubuntu 默认 umask 值相同(都是 0022),但底层控制机制、生效范围和策略演进方向存在实质性差异,不能简单等同看待。
默认值表面一致,但来源逻辑不同
两者开机后新登录用户执行 umask 命令,通常都显示 0022,即文件默认权限为 -rw-r--r--(644),目录为 drwxr-xr-x(755)。但这个值并非来自同一配置路径:
- CentOS(RHEL系):主要继承自
/etc/login.defs中的UMASK设置(默认077或022,视版本而定),该值仅影响useradd创建新用户时的初始 shell 环境,并不实时控制已登录会话 - Ubuntu(Debian系):默认未在
/etc/login.defs显式设UMASK,实际生效依赖 PAM 模块或 shell 配置;其行为更依赖运行时会话机制而非用户创建阶段
PAM 配置方式与默认启用状态不同
生产环境中需统一设置 umask 时,两者的标准路径和模块支持有区别:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
- CentOS 7/8:默认已内置
pam_umask.so,推荐在/etc/pam.d/system-auth或/etc/pam.d/password-auth中添加session optional pam_umask.so umask=0027 - Ubuntu:默认不安装
pam_umask模块,需先执行sudo apt install libpam-umask,再编辑/etc/pam.d/common-session,追加session optional pam_umask.so umask=0027 - 两者均要求该行位于 session 类型段落,且不能写在 auth 或 account 段——否则无效
shell 级后备策略的默认行为不同
当 PAM 未启用或被跳过时,shell 启动脚本的兜底作用显现差异:
- CentOS:/etc/profile 中通常不含 umask 设置,依赖 PAM 或用户级 ~/.bashrc;若管理员手动加
umask 0027,仅对 bash 登录 shell 生效 - Ubuntu:/etc/profile 默认也无 umask 行,但部分衍生版本(如某些云镜像)可能在 /etc/bash.bashrc 中预置 umask;这种设置易被 PAM 覆盖,且不作用于非 bash shell(如 dash)
- 注意:无论哪个系统,都不应在 ~/.bashrc 中设 umask 作为基线策略——它无法约束 cron、systemd service 或 su -c 场景
安全基线实践中的关键分歧点
企业加固时,两者的默认宽松性暴露不同风险面:
- CentOS 更倾向“静态基线”:/etc/login.defs 的 UMASK 影响新账号家目录初始化权限,但对已有用户无感;若未配 PAM,su 切换用户后仍沿用原 umask
- Ubuntu 更依赖“动态会话控制”:PAM 配置一旦生效,SSH、GNOME、console login 全部统一;但若遗漏 libpam-umask 安装,整个策略即失效,且无报错提示
- 两者共同短板:umask 不影响已有文件权限。CentOS 用户家目录常为 755(可被同组读),Ubuntu 默认同样;必须额外执行
chmod 700 /home/*和chmod 600 ~/.ssh/authorized_keys才算闭环










