什么是 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.