> 文件与目录管理 > umask

umask 命令指南:设置新创建文件/目录的默认权限

`umask` 命令(用户文件创建模式掩码)用于控制在 Linux 和 Unix 系统中新创建的文件和目录的默认访问权限。它通过设置自动适用于文件创建的权限限制掩码,从而防止文件在不必要的情况下以过于宽松的权限创建,在增强安全性方面发挥着重要作用。通过本指南了解 `umask` 的概念和用法。

umask 概述

操作系统在创建新文件或目录时会授予默认权限。最终权限是从这个默认权限中排除 `umask` 值所决定的。`umask` 在安全方面非常重要,例如,可以防止重要的配置文件以过于开放的权限创建。每个用户会话的 `umask` 值可能不同,通常在 `.bashrc` 或 `.profile` 等 shell 初始化文件中进行设置。

umask 的工作原理

`umask` 是 **指定“排除”权限的掩码值,而不是允许的权限**。也就是说,从默认最大权限中减去 `umask` 值后的结果就是最终权限。

默认最大权限

  • 文件: `666`(读取和写入,无执行权限)
  • 目录: `777`(包括读取、写入和执行权限)

umask 计算方式

`umask` 用 3 位八进制数字表示(例如:`022`,`002`)。这个值按所有者(User)、组(Group)、其他(Others)顺序应用。每位数字代表权限位(读取 = 4,写入 = 2,执行 = 1)的总和。最终权限的计算方式如下:

umask 计算示例(umask 022) 我们通过通常使用的 `umask 022` 的情况来了解最终权限是如何决定的。
类型 默认最大权限 umask 最终权限
文件 666 (rw-rw-rw-) 022 (--w--w-) 644 (rw-r--r--)
目录 777 (rwxrwxrwx) 022 (--w--w-) 755 (rwxr-xr-x)

常见 umask 值

在大多数系统中,默认 `umask` 值为 `0022` 或 `0002`。前面的 `0` 表示特殊权限(粘滞位、SGID、SUID),通常设置为 `0`。

常见 umask 值的含义

  • `umask 022`: 文件以 `644`(rw-r--r--),目录以 `755`(rwxr-xr-x)权限创建。这是将所有权限授予所有者,而给予组和其他用户读取和执行权限的最常见设置。
  • `umask 002`: 文件以 `664`(rw-rw-r--),目录以 `775`(rwxrwxr-x)权限创建。这允许组用户也拥有写权限,便于同组内的协作。
  • `umask 077`: 文件以 `600`(rw-------),目录以 `700`(rwx------)权限创建。这是一种非常严格的权限设置,除了所有者外,任何人都无法访问。适用于安全性非常重要的个人文件或目录。

主要 umask 命令选项

`umask` 命令用于检查当前值或设置新值。若不带选项使用,则显示当前 `umask` 值。

1. umask 值检查与设置

生成的命令:

请尝试组合命令。

描述:

`umask` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 `umask` 命令的各种应用示例,学习如何检查和设置新创建文件和目录的默认权限。

检查当前 umask 值

umask

检查当前 shell 会话的 `umask` 值,格式为八进制(例如:`0022`)。

以符号模式检查 umask 值

umask -S

以最终允许的权限形式(例如:'u=rwx,g=rx,o=rx')检查 `umask` 值,而不是以八进制显示。

设置 umask 值为 002

umask 002

将新创建的文件设置为 `664`(rw-rw-r--),目录设置为 `775`(rwxrwxr-x)权限,改变 `umask`。(允许同组用户写权限)

设置严格的 umask 值为 077

umask 077

将新创建的文件设置为 `600`(rw-------),目录设置为 `700`(rwx------)权限,改变 `umask`。除了所有者外,任何人都无法访问。

检查更改 umask 后的文件/目录创建权限

umask 002
touch test_file_002.txt
mkdir test_dir_002
ls -l test_file_002.txt test_dir_002

在将 umask 设置为 `002` 后,创建新文件和目录,并使用 `ls -l` 检查更改的权限是否生效。


相同类别命令