11.3. 管理 umask
您可以使用 umask
工具显示、设置或更改 umask 的当前或默认值。
11.3.1. 显示 umask 的当前值
您可以使用 umask
工具以符号或数值模式显示 umask 的当前值。
流程
要在符号模式下显示 umask 的当前值,请使用:
$ umask -S
要在八进制模式下显示 umask 的当前值,请使用:
$ umask
注意以八进制模式显示 umask 时,您可以注意到它显示了四位数字(
0002
或0022
)。umask 的第一个数字代表一个特殊的位(spicky 位、SGID 位或 SUID 位)。如果第一个数字设定为0
,则代表没有设置特殊位。
11.3.2. 显示默认 bash umask
您可以使用不同的 shell,如 bash
、ksh
、zsh
和 tcsh
。这些 shell 可以是登录或非登录 shell。您可以通过打开一个原生或 GUI 终端来调用登录 shell。
要判断您是在登录 shell 还是非登录 shell 中执行某个命令,请使用 echo $0
命令。
例 11.8. 确定您在登录或非登录 bash shell 下工作
如果
echo $0
命令的输出返回bash
,则您在非登录 shell 下执行命令。$ echo $0 bash
非登录 shell 的默认 umask 在
/etc/bashrc
配置文件中设置。如果
echo $0
命令的输出返回-bash
,则您在登录 shell 下执行命令。# echo $0 -bash
登录 shell 的默认 umask 在
/etc/login.defs
配置文件中设置。
流程
要显示非登录 shell 的默认
bash
umask,请使用:$ grep umask /etc/bashrc
输出会返回:
# By default, we want umask to get set. This sets it for non-login shell. umask 002 umask 022
要显示登录 shell 的默认
bash
umask,请使用:$ grep "UMASK" /etc/login.defs
输出会返回:
# UMASK is also used by useradd(8) and newusers(8) to set the mode for new UMASK 022 # If HOME_MODE is not set, the value of UMASK is used to create the mode.
11.3.3. 使用符号值设置 umask
您可以使用 umask
工具及符号值(字母和符号组合)来为当前的 shell 会话设置 umask
您可以分配以下 权限 :
- 读(r)
- 写(w)
- 执行(x)
权限可分配给以下 所有权级别 :
- 用户所有者 (u)
- 组所有者(g)
- 其他 (o)
- 所有 (a)
要添加或删除权限,您可以使用以下 符号 :
-
+
在现有权限之上添加权限 -
-
从现有权限中删除权限 =
删除现有权限,并明确定义新权限注意任何在等号(
=
)后未指定的权限都将被自动禁止。
11.3.4. 使用数值设置 umask
您可以使用 umask
工具和八进制值(数字)来为当前 shell 会话设置 umask。
流程
要为当前的 shell 会话设置 umask,请使用:
$ umask octal_value
使用数值替换 octal_value。如需了解更多详细信息,请参阅 用户文件创建模式掩码。
注意umask 仅对当前 shell 会话有效。
11.3.5. 更改非登录 shell 的默认 umask
您可以通过修改 /etc/bashrc
文件来更改标准用户的默认 bash
umask。
先决条件
-
root
访问权限
流程
-
以
root
用户身份,在编辑器中打开/etc/bashrc
文件。 修改以下部分以设置新的默认
bash
umask :if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then umask 002 else umask 022 fi
将 umask 的默认值(
002
)替换为另一个数值。如需了解更多详细信息,请参阅 用户文件创建模式掩码。- 保存更改并退出编辑器。
11.3.6. 更改登录 shell 的默认 umask
您可以通过修改 /etc/login.defs
文件来更改 root
用户的默认 bash
umask。
先决条件
-
root
访问权限
流程
-
以
root
用户身份,在编辑器中打开/etc/login.defs
文件。 修改以下部分以设置新的默认
bash
umask :# Default initial "umask" value used by login(1) on non-PAM enabled systems. # Default "umask" value for pam_umask(8) on PAM enabled systems. # UMASK is also used by useradd(8) and newusers(8) to set the mode for new # home directories if HOME_MODE is not set. # 022 is the default value, but 027, or even 077, could be considered # for increased privacy. There is no One True Answer here: each sysadmin # must make up their mind. UMASK 022
将 umask 的数值(
022
)替换为另一个数值。如需了解更多详细信息,请参阅 用户文件创建模式掩码。- 保存更改并退出编辑器。
11.3.7. 更改特定用户的默认 umask
您可以通过修改用户的 .bashrc
来更改特定用户的默认 umask。
流程
将指定 umask 的八进制值的行追加到特定用户的
.bashrc
文件中。$ echo 'umask octal_value' >> /home/username/.bashrc
使用数值替换 octal_value,并使用用户名替换 username。如需了解更多详细信息,请参阅 用户文件创建模式掩码。
11.3.8. 为新创建的主目录设置默认权限
您可以通过修改 /etc/login.defs
文件来更改新创建的用户的主目录的权限模式。
流程
-
以
root
用户身份,在编辑器中打开/etc/login.defs
文件。 修改以下部分来设置新的默认 HOME_MODE :
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new # home directories. # If HOME_MODE is not set, the value of UMASK is used to create the mode. HOME_MODE 0700
将默认的八进制值(
0700
)替换为另一个八进制值。所选模式将用于为主目录创建权限。- 如果设置了 HOME_MODE,请保存更改并退出编辑器。
如果没有设置 HOME_MODE,请修改 UMASK 来为新创建的主目录设置模式:
# Default initial "umask" value used by login(1) on non-PAM enabled systems. # Default "umask" value for pam_umask(8) on PAM enabled systems. # UMASK is also used by useradd(8) and newusers(8) to set the mode for new # home directories if HOME_MODE is not set. # 022 is the default value, but 027, or even 077, could be considered # for increased privacy. There is no One True Answer here: each sysadmin # must make up their mind. UMASK 022
将默认的八进制值(
022
)替换为另一个八进制值。如需了解更多详细信息,请参阅 用户文件创建模式掩码。- 保存更改并退出编辑器。