Linux中的Umask命令

在Linux和Unix操作系统上,所有新文件都是使用默认权限集创建的。 的 umask 实用程序允许您查看或设置文件模式创建掩码,该掩码确定新创建的文件或目录的权限位。

mkdir,touch,tee和其他创建新文件和目录的命令使用它。

Linux权限#

在继续之前,让我们简短地解释一下Linux权限模型。

在Linux中,每个文件都与一个所有者和一个组相关联,并为三种不同类别的用户分配了权限访问权限:

  • 文件所有者。
  • 小组成员。
  • 其他人。

有三种权限类型适用于每个类:

  • 读取权限。
  • 写入权限。
  • 执行权限。

此概念使您可以指定允许哪些用户读取文件,写入文件或执行文件。

要查看文件权限,请使用 ls 命令:

ls -l dirname
drwxr-xr-x 12 linuxize users 4.0K Apr  8 20:51 dirname
|[-][-][-]    [------] [---]
| |  |  |        |       |       
| |  |  |        |       +-----------> Group
| |  |  |        +-------------------> Owner
| |  |  +----------------------------> Others Permissions
| |  +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type

第一个字符表示文件类型,可以是常规文件(-), 目录 (d),符号链接(l)或任何其他特殊类型的文件。

接下来的9个字符代表权限,每3组三个字符。 第一组显示所有者权限,第二组显示所有者权限,最后一组显示其他所有人权限。

字符 r 八进制值是 4 代表阅读, w 八进制值是 2x 八进制值是 1 执行许可和(-)的八进制值 0 没有权限。

还有其他三种特殊的文件权限类型: setuidsetgidSticky Bit

在上面的示例中(rwxr-xr-x)表示所有者拥有读取,写入和执行权限(rwx),该群组和其他人具有读取和执行权限。

如果我们使用数字符号表示文件权限,我们将得出数字 755

  • 所有者: rwx = 4+2+1 = 7
  • 组: r-x = 4+0+1 = 5
  • 其他: r-x = 4+0+1 = 5

当以数字符号表示时,权限可以具有三个或四个八进制数字(0-7)。 第一位数字表示特殊权限,如果省略,则意味着在文件上未设置特殊权限。 就我们而言 755 与…相同 0755。 第一位数字可以是 4 对于 setuid2 对于 setgid1 对于 Sticky Bit

可以使用 chmod 命令和所有权使用 chown 命令。

了解umask#

默认情况下,在Linux系统上,默认创建权限为 666 对于文件,它向用户,组和其他人授予读写权限 777 目录,这意味着对用户,组和其他用户具有读,写和执行权限。 Linux不允许创建具有执行权限的文件。

可以使用以下命令修改默认创建权限 umask 效用。

umask 仅影响当前的shell环境。 在大多数Linux发行版中,系统范围内的默认umask值是在 pam_umask.so 要么 /etc/profile 文件。

如果要基于每个用户指定其他值,请编辑用户的外壳程序配置文件,例如 ~/.bashrc 要么 ~/.zshrc。 您还可以更改当前会话 umask 通过运行获得价值 umask 然后是所需的值。

要查看当前的掩码值,只需键入 umask 没有任何参数:

umask

输出将包括

022

umask 值包含允许位 在新创建的文件和目录上设置。

正如我们已经提到的,文件的默认创建权限为 666 和目录 777。 要计算新文件的权限位,请从默认值中减去umask值。

例如,要计算 umask 022 将影响新创建的文件和目录,请使用:

  • 档案: 666 - 022 = 644。 所有者可以读取和修改文件。 群组和其他人只能读取文件。
  • 目录: 777 - 022 = 755所有者可以cd进入目录并列出读取,修改,创建或删除目录中的文件。 组和其他人可以 cd 进入目录并列出并读取文件。

您也可以使用 -S 选项:

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

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

设置掩码值

可以使用八进制或符号表示法设置文件创建掩码。 要使更改永久设置新的 umask 全局配置文件中的值,例如 /etc/profile 文件,它将影响所有用户或用户的外壳程序配置文件中的文件,例如 ~/.profile~/.bashrc 要么 ~/.zshrc 这只会影响用户。 用户文件的优先级高于全局文件。

在更改之前 umask 值,请确保新值不会造成潜在的安全风险。 限制值小于 022 应该非常谨慎地使用。 例如 umask 000 表示任何人都将具有对所有新创建文件的读取,写入和执行权限。

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

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

Umask值: 777-750 = 027

所需 umask 以数字符号表示的值是 027

要在系统范围内永久设置新值,请打开 /etc/profile 使用文本编辑器保存文件:

sudo nano /etc/profile

并在文件开头更改或添加以下行:

/ etc / profile

umask 027

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

source /etc/profile

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

mkdir newdirtouch newfile

如果您使用 ls 命令,您会注意到新文件具有 640 和新目录 750 权限,如我们所愿:

drwxr-x--- 2 linuxize users 4096 Jul  4 18:14  newdir
-rw-r----- 1 linuxize users    0 Jul  4 18:14  newfile

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

结论#

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

有关更多信息,请键入 man umask 在您的终端中。

如有任何疑问,请在下面发表评论。

umask终端

Sidebar