umask是linux中用于控制新建文件和目录默认权限的掩码,通过从文件最大权限666和目录最大权限777中屏蔽相应权限位来确定实际权限;例如umask 022创建文件为644、目录为755,umask 002则为664和775,适合组内共享;系统级设置可通过修改/etc/profile、/etc/login.defs或使用pam模块(如pam_umask.so)实现,其中pam方式推荐用于统一管理不同登录场景;单个用户可通过修改~/.bashrc、~/.zshrc等shell配置文件设置;常见umask值包括022(最常用)、002(协作环境)、077(完全私有)和007(组共享);验证时需打开新终端执行umask命令并创建测试文件检查权限;需注意umask仅影响新文件,权限计算为按位屏蔽而非数学减法,且某些服务如cron或图形界面可能需单独配置以确保生效。

在 Linux 和类 Unix 系统中,
umask决定了新建文件和目录的默认权限。通过设置默认
umask,可以控制新创建文件的访问权限,提升系统安全性或满足协作需求。
什么是 umask
umask是一个权限掩码,它从默认的最大权限中“屏蔽”掉某些权限。
- 文件默认最大权限是
666
(可读可写) - 目录默认最大权限是
777
(可读可写可执行)
umask值会从这些最大权限中减去,得到实际创建文件时的权限。例如:
umask 022
:文件权限为644
,目录为755
umask 002
:文件权限为664
,目录为775
(适合组内共享)
如何设置系统级默认 umask
如果你希望为整个系统或所有用户设置默认
umask,可以通过以下方式:
1. 修改 /etc/profile
或 /etc/bashrc
这些文件影响所有使用 bash 的用户。
编辑
/etc/profile:
sudo nano /etc/profile
在文件末尾添加:
umask 022
保存后,所有新登录的用户会应用这个
umask。
注意:修改后仅对新登录会话生效,当前终端不会立即改变。
2. 修改 /etc/login.defs
(适用于通过 login 创建的用户)
某些系统(如使用 shadow 密码的)会从
/etc/login.defs读取
umask设置。
编辑文件:
sudo nano /etc/login.defs
找到并修改:
UMASK 022
这个设置会影响
useradd创建的新用户。
3. PAM 模块设置(推荐用于精细控制)
许多现代 Linux 发行版使用 PAM(Pluggable Authentication Modules)来设置
umask。
云模块_YunMOK网站管理系统采用PHP+MYSQL为编程语言,搭载自主研发的模块化引擎驱动技术,实现可视化拖拽无技术创建并管理网站!如你所想,无限可能,支持创建任何网站:企业、商城、O2O、门户、论坛、人才等一块儿搞定!永久免费授权,包括商业用途; 默认内置三套免费模板。PC网站+手机网站+适配微信+文章管理+产品管理+SEO优化+组件扩展+NEW Login界面.....目测已经遥遥领先..
编辑 PAM 配置文件:
sudo nano /etc/pam.d/common-session
添加一行:
session optional pam_umask.so umask=022
这样在用户登录时,PAM 会自动设置
umask,适用于多种 shell 和登录方式(如 SSH、图形界面等)。
如何为单个用户设置 umask
如果只想为某个用户设置,可以修改其 shell 配置文件。
编辑用户家目录下的配置文件
例如,对于使用 bash 的用户,编辑:
~/.bashrc ~/.bash_profile
添加:
umask 022
如果是 zsh 用户,修改
~/.zshrc。
注意:不同 shell 使用不同的配置文件,需确认当前用户使用的是哪种 shell。
umask 值的常见选择
022
:最常见,文件644
,目录755
,适合大多数个人或服务器环境002
:文件664
,目录775
,适合团队协作,组内成员可写077
:文件600
,目录700
,完全私有,仅用户自己可访问007
:文件660
,目录770
,适合组共享但拒绝其他用户
验证 umask 是否生效
打开新终端,运行:
umask
输出应为设置的值(如
0022)。
测试创建文件和目录:
touch testfile mkdir testdir ls -l testfile testdir
查看权限是否符合预期。
注意事项
umask
只影响新创建的文件和目录,不会改变已有文件权限- 权限计算是“最大权限减去 umask”,但实际是按位屏蔽,不是数学减法
- 某些应用程序(如 SSH、cron)可能不继承 shell 的 umask,需单独配置
- 图形界面登录可能不加载
.bashrc
,建议在.profile
或 PAM 中设置
基本上就这些。设置
umask看似简单,但对系统安全和协作效率影响不小,合理配置能避免很多权限问题。









