Linux 中的 umask 是什么?Linux 中的 umask 是什么?Linux 中的 umask 是什么?Linux 中的 umask 是什么?
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Linux 中的 umask 是什么?

UMASK 在 Linux 或 Unix 系统中称为 User Mask,也称为 User file creation Mask。这是在 Linux 机器中创建新文件或文件夹时的基本权限或默认权限。

它被 Linux 中的多个命令使用,例如 mkdir、touch、tee 和其他创建文件和目录的命令。当创建新文件或目录时,它会参与每一步。

文件权限:

在我们继续深入了解 umask 之前,让我们先简单了解一下文件权限。

Linux 以其安全性着称。 Linux 中的每个文件或目录都有一组特定的权限和所有权。让我们看看下面的用户类。

Linux 中的每个文件都有以下三个与之关联的用户类。

  1. 用户 - 拥有文件的用户 - 默认情况下,这表示文件的创建者,除非您更改它。
  2. 组 - 这表示组中的人将被分配文件权限。
  3. 其他 - 这限制了不是所有者或分配组中的其他用户。

上面提到的每个用户类别都有三种文件访问类型。

  1. r - 读取权限 - 读取文件内容的能力
  2. w - 写权限 - 改变文件内容的能力
  3. x - 执行权限 - 将文件作为程序执行的能力

上面的概念告诉你谁可以读取文件内容,修改文件内容或者执行程序。

查看权限 - 符号模式:

让我们看看下面的文件所有权。您可以通过键入 ls -l 命令获取 Linux 机器上的信息。

上图中的第一个字符显示文件类型。 Linux 中可能有不同类型的文件,如下所示。

    -   

Indicates the simple regular file with different extensions like .txt, .json, .sh, .py, .rb, and so on

    d

Indicates directory/folder

    l

Indicates a symbolic link or symlink or soft link

    c

Indicates character device file

    b

Indicates block device file

接下来的九个符号分为以下三个部分。

               rwx

The file owner can read the content, modify the contents and execute the file as a program

   r-x

Members in the group “users” can read the content and execute the file as a program but cannot modify the file contents

   r-x

The one who is not the owner also not the member of the group i.e. other, can also read the contents of the file and execute the file as a program but cannot modify the file contents

查看权限 - 数字模式:

还有一种使用数字表示权限的方法,称为数字模式。

让我们看看下面的数字文件权限表。

  0

---

No permission

1

--x

Only Execute permission

2

-w-

Only write permission

3

-wx

Write and Execute permission

4

r--

Only read permission

5

r-x

Read and Execute permission

6

rw-

Read and Write permission

7

rwx

Read, Write and Execute permission

如果我参考此数字权限图表并将其应用于上图中提到的同一目录,权限将如下所示。

rwx

4+2+1

7

r-x

4+0+1

5

r-x

4+0+1

5


因此,testdir 目录的数字权限为 755。

了解 UMASK:

让我们通过执行以下命令创建一个新文件和新目录。

$ touch testfile
$ mkdir testdir

让我们通过执行 ls -l 命令查看 testfile 和 testdir 的权限。

$ls -l

Output:
drwxr-xr-x  2 niteshb users    4096 Mar 21 22:43 testdir
-rw-r--r--  1 niteshb users       0 Mar 21 22:43 testfile

你注意到权限了吗?他们是不同的,对吧?这是因为在 Linux 机器中设置了默认的 umask 值。

默认情况下,在Linux机器上,一个文件的默认创建权限是666,即所有者、组和其他人的读写权限;目录的默认创建权限是777,即所有者、组和其他人的读写和执行权限。其他的。

众所周知,目录不能执行。那为什么目录需要执行权限呢?那么,目录的执行权限就是允许访问目录下的内容。如果使用 chmod 命令我们将目录的权限更改为 666 并尝试通过 cd 命令进入目录,您将得到权限被拒绝的错误。

在大多数 Linux 发行版中,默认的系统范围值是在 pam_umask.so 或 /etc/profile 文件中设置的。通过在用户主目录的 ~/.bashrc 文件中添加值,我们可以为用户创建一个特定的 umask 值。

要检查 umask 值,请执行 umask 命令。

$umask

输出:

0022

我们现在可以忽略以上四个数字中的第一个 0。它是 Linux 中高级权限的一部分。即使您具有写权限也可以防止修改文件,或者即使您是 root 用户也可以防止删除文件。在这篇博客中,我们只关注其他三个数字。

要更改当前会话 umask 值,请执行以下命令,然后执行所需的值。

$umask 0044

文件和目录如何获得权限:

与 umask 关联的值不是您为文件和目录获得的权限。

有一个非常简单的计算。正如我们上面提到的,文件的默认值为 666,目录的默认值为 777。要计算新文件或目录的权限位,请从默认值中减去 umask 值。

例如,让我们计算一个新的文件或目录权限将如何因为 umask 而受到影响。

  • 文件:666 - 022=644。根据权限,所有者可以读取和执行文件。群组和其他人可以阅读该文件。
  • 目录:777 - 022=755。这意味着所有者将拥有目录的所有读、写权限和 cd 权限。 Group 和其他人可以读取和列出目录的内容并 cd 到目录。

您还可以通过执行以下命令以数字形式查看 umask 值。

$umask

输出:

u=rwx,g=rx,o=rx

与数字符号不同,符号符号值包含将在新创建的文件和目录上设置的权限位。

设置掩码值:

可以使用八进制或符号表示法设置文件创建掩码。要使更改永久设置新的 umask 值,请在全局配置文件(如 /etc/profile 文件)中设置新的 umask 值,这将影响所有用户或在用户的 shell 配置文件(如 ~/.profile、~/.bashrc 或 ~/.zshrc 中)只会影响用户。用户文件优先于全局文件。

在更改 umask 值之前,请确保新值不会带来潜在的安全风险。应谨慎使用限制性低于 022 的值。例如 umask 000 意味着任何人都将拥有所有新创建文件的读、写和执行权限。

假设我们想为新创建的文件和目录设置更严格的权限,这样其他人将无法 cd 到目录和读取文件。我们想要的权限是目录的 750 和文件的 640。

要计算 umask 值,只需从默认权限中减去所需的权限:

掩码值:777-750=027

以数字表示法表示的所需 umask 值是 027。

要在系统范围内永久设置新值,请使用文本编辑器打开 /etc/profile 文件,并在文件开头更改或添加以下行:

umask 0027

要使更改生效,请运行以下源命令或注销并登录:

$source /etc/profile

为了验证新设置,我们将使用以下命令创建一个新文件和目录。

$mkdir newtestdir
$touch newtestfile

如果您使用 ls 命令检查权限,您会注意到新文件具有 640 和新目录 750 权限,正如我们想要的:

drwxr-xr--  2 niteshb  users    4096 Mar 21 22:43 newtestdir
-rw-r-----  1 niteshb  users       0 Mar 21 22:43 newtestfile

另一种设置文件创建掩码的方法是使用符号表示法。例如 umask u=rwx,g=rx,o= 与 umask 027 相同。

结论:

在本指南中,我们解释了 Linux 权限以及如何使用 umask 命令为新创建的文件或目录设置权限位。

有关更多信息,请在您的终端中输入以下命令。

$man umask
©2015-2025 艾丽卡 support@alaica.com