永久修改 linux 用户默认 umask 需配置 shell 初始化文件(如 ~/.bashrc 或 /etc/profile)并补充 pam 设置(如 /etc/pam.d/common-session),最后通过 touch/mkdir 实测权限验证。

永久修改 Linux 用户的默认 umask,关键在于让 shell 在每次登录或启动时自动执行 umask 命令。不能只靠临时命令,必须写入初始化配置文件,并确保该文件被实际加载。
按用户生效:改 ~/.bashrc 或 ~/.profile
这是最常用、最稳妥的方式,适用于使用 bash 的普通用户:
- 打开终端,编辑当前用户的 shell 配置文件(推荐
~/.bashrc,它在大多数桌面环境和终端中都会被加载):nano ~/.bashrc - 在文件末尾添加一行(例如设为协作安全的
0027):umask 0027 - 保存退出后,立即生效:
source ~/.bashrc - 验证:新开一个终端,运行
umask,应显示0027
注意:如果用户用的是 zsh 或 fish,要改对应配置文件(如 ~/.zshrc);若系统登录时读取的是 ~/.bash_profile 而非 ~/.bashrc,需确认前者是否调用了后者,否则直接把 umask 行加到 ~/.bash_profile 中。
对所有用户生效:改 /etc/profile 或 /etc/bash.bashrc
适合管理员统一管控,影响所有新启动的交互式 shell:
- 编辑系统级配置文件(Debian/Ubuntu 推荐
/etc/bash.bashrc,通用场景可用/etc/profile):sudo nano /etc/bash.bashrc - 在文件末尾添加:
umask 0027 - 保存后,新登录的用户会自动应用;已有会话需重新登录才生效
- 不建议直接改
/etc/environment,它不支持 shell 命令语法
生产环境必须补 PAM 配置
仅改 shell 配置文件不够——su -、sudo -i、cron 脚本等非标准登录方式通常不读这些文件,必须通过 PAM 强制统一:
- 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 上运行sudo apt install libpam-umask)
验证是否真生效,别只看 umask 命令
umask 命令只显示当前 shell 的值,不代表新建文件行为。必须实测:
- 新开一个干净终端(或 SSH 重连)
- 执行:
umask && touch testf && mkdir testd && ls -ld testf testd - 若设的是
0027,应看到:
文件权限为-rw-r-----(640),目录为drwxr-x---(750) - 对于 cron 脚本等非交互场景,仍需在脚本开头显式写
umask 0027











