什么是 umask 值?

在计算中,umask 是一个命令,用于确定要在创建的任何文件或者目录上设置的默认权限。
它还指设置掩码的函数,以及掩码本身,正式称为文件模式创建掩码。

什么是默认 umask 值?

现在,这个问题可能很棘手,也可能很简单,这取决于面试官/提出问题的人。
Umask 值是为不同的目的设置的,具有不同的值,如文件、目录、任何用户的主目录。

创建新目录的默认 umask 值为 0022 例如:0755
创建新文件的默认 umask 值为 0022 例如:0644
使用 useradd 命令的默认 umask 值为 0002 例如:0700

为什么默认的 umask 值包含 4 位数字?

0 022 中的第一个数字定义了特殊权限值。
如果我们想为要创建的每个文件/目录设置任何特殊权限,则可以相应地定义该值。

umask 值是如何计算的?

要理解 umask 值,我们需要非常清楚 Linux/Unix 中使用的权限概念。
这里我们简单的说一下:

Linux/Unix 中权限的八进制表示法

八进制值允许
0没有许可
1仅执行
2只写
3写下和执行
4只读
5读和执行
6读和写
7所有权限

任何目录的完全权限被认为是 777 和 666 的任何文件,它们分别作为计算目录和文件的 umask 值的基本权限。

为每个要创建的目录提供 755 的默认权限
777 755 = 022

因此要设置的 umask 值将为 022 以获得默认权限 755

让我们再举一个例子
为每个要创建的目录提供 700 的默认权限
777 700 = 077

所以要设置的 umask 值将是 077 以获得默认权限 700

如何查看默认的 umask 值?

使用以下命令查看八进制模式下的 umask 值

# umask
0022

在符号模式下查看 umask 值

# umask -S
u=rwx,g=rx,o=rx

如何设置 umask 的默认值?

我们可以根据需要临时或者永久设置默认 umask 值。

要临时设置 umask 值,请在终端上运行以下命令

# umask new_umask_value
# umask 0077

我们可以使用 umask 命令验证相同

为文件/目录创建永久设置 umask 值
添加要在 ~/.bashrc 或者 ~/.bash_profile 中设置的 umask 值,因为每次登录时执行上述文件都会更新新的 umask 值。

要了解 .bashrc 和 .bash_profile 文件之间的区别,请点击以下链接
如何在 Linux 中永久设置环境 (PATH) 变量

重要的提示:

但是,如果我们执行 useradd 命令,创建的主目录的默认权限为 700,这意味着它不会采用本地定义的 umask 值。
对于 useradd 命令,在 /etc/login.defs 中设置不同的 umask 值

# less /etc/login.defs
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077

正如我们在上面看到的,为任何用户创建主目录的默认 umask 值是 077.

Linux 中的 UMASK 值
日期:2020-06-02 22:18:42 来源:oir作者:oir