Linux umask 命令及实际示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将探索 Linux 的 umask 命令,该命令用于设置新创建的文件和目录的默认权限。我们将从理解 umask 命令及其工作原理开始,然后学习如何在不同场景下使用 umask 修改文件和目录权限。本实验涵盖了 Linux 环境中用户和权限管理的基本内容。

实验将引导你完成检查当前 umask 值、更改 umask 以设置不同的默认权限,并观察对新创建的文件和目录的影响的过程。通过本实验,你将深入了解如何使用 umask 命令有效地管理文件和目录权限。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") subgraph Lab Skills linux/ls -.-> lab-422970{{"Linux umask 命令及实际示例"}} linux/touch -.-> lab-422970{{"Linux umask 命令及实际示例"}} linux/chmod -.-> lab-422970{{"Linux umask 命令及实际示例"}} linux/mkdir -.-> lab-422970{{"Linux umask 命令及实际示例"}} end

理解 umask 命令

在这一步中,我们将探索 Linux 的 umask 命令,该命令用于设置新创建的文件和目录的默认权限。

umask 命令指定了文件模式创建掩码(file mode creation mask),它决定了新文件和目录的默认权限。umask 值是一个 4 位八进制数,表示不应授予的权限。

让我们从检查当前的 umask 值开始:

umask

示例输出:

0022

umask0022 表示新文件的默认权限为 0644(rw-r--r--),而新目录的默认权限为 0755(rwxr-xr-x)。

umask 值是通过从默认权限(文件为 0777,目录为 0755)中减去指定值来计算的。例如,umask0022 时,默认权限为:

  • 文件:0777 - 0022 = 0755(rw-r--r--)
  • 目录:0755 - 0022 = 0733(rwxr-xr--)

你可以使用以下命令更改 umask 值:

umask 0002

这将 umask 设置为 0002,这意味着新文件的默认权限为 0775(rw-rwxr-x),而新目录的默认权限为 0775(rwxrwxr-x)。

使用 umask 修改文件和目录权限

在这一步中,我们将学习如何使用 umask 命令修改文件和目录的默认权限。

首先,让我们创建一个新文件和新目录,以观察 umask 的效果:

touch ~/project/new_file.txt
mkdir ~/project/new_directory

现在,让我们检查新创建的文件和目录的权限:

ls -l ~/project

示例输出:

-rw-r--r-- 1 labex labex     0 Apr 12 12:34 new_file.txt
drwxr-xr-x 2 labex labex  4096 Apr 12 12:34 new_directory

如你所见,新文件的默认权限为 0644(rw-r--r--),新目录的默认权限为 0755(rwxr-xr-x),这与当前的 umask0022 相对应。

现在,让我们将 umask 值更改为 0002

umask 0002

再次创建一个新文件和新目录:

touch ~/project/another_file.txt
mkdir ~/project/another_directory

并检查权限:

ls -l ~/project

示例输出:

-rw-rw-r-- 1 labex labex     0 Apr 12 12:35 another_file.txt
drwxrwxr-x 2 labex labex  4096 Apr 12 12:35 another_directory

如你所见,新文件的默认权限为 0774(rw-rw-r--),新目录的默认权限为 0775(rwxrwxr-x),这与 umask0002 相对应。

这展示了如何使用 umask 命令修改新创建文件和目录的默认权限。

在不同场景中应用 umask

在这一步中,我们将探索如何在不同场景中应用 umask 命令,以有效管理文件和目录权限。

场景 1:保护敏感文件

假设你有一个敏感文件,希望确保只有文件所有者具有读写权限。你可以通过设置更严格的 umask 值来实现这一点:

umask 0077
touch ~/project/sensitive_file.txt

示例输出:

-rw------- 1 labex labex 0 Apr 12 12:36 sensitive_file.txt

umask 值为 0077 时,新文件的权限为 0700(rwx------),这意味着只有文件所有者具有读写权限。

场景 2:允许组内协作

在需要创建可供特定组访问的文件和目录的场景中,你可以相应地设置 umask 值:

umask 0007
mkdir ~/project/shared_directory
touch ~/project/shared_file.txt

示例输出:

drwxrwx--- 2 labex labex 4096 Apr 12 12:37 shared_directory
-rw-rw---- 1 labex labex    0 Apr 12 12:37 shared_file.txt

umask 值为 0007 时,新目录的权限为 0770(rwxrwx---),新文件的权限为 0660(rw-rw----),允许组内成员访问和修改这些文件和目录。

记住,umask 值是从默认权限(文件为 0777,目录为 0755)中减去,以确定最终权限。尝试不同的 umask 值,以了解它们如何影响默认权限。

总结

在本实验中,我们探索了 Linux 的 umask 命令,该命令用于设置新创建的文件和目录的默认权限。我们了解到,umask 值是一个 4 位八进制数,表示不应授予的权限。我们还学习了如何使用 umask 命令修改文件和目录的默认权限,以及如何创建新文件和目录以观察 umask 的效果。实验通过实际示例帮助我们理解了 umask 命令在不同场景中的使用和应用。

Linux 命令速查表