什么是umask位以及如何在Linux中使用它们?

317 阅读2分钟

在Linux中,每个文件和目录都有一些权限,有助于管理系统中每个用户的访问级别。用户文件创建模式掩码位设置新创建的文件或目录的权限。Linux的umask由9位组成:3位代表用户(所有者)、组和其他用户。umask改变了新创建文件的默认权限,以防止其他用户访问它们。我们可以通过使用umask命令来改变这些权限。

开始使用

列出分配给文件和目录的权限,如下所示。

ubuntu@ubuntu:~$ ls -la

total 32

drwxr-xr-x 5 ubuntu ubuntu 4096 Sep 23 23:57 .

drwxr-x--- 32 ubuntu ubuntu 4096 Sep 24 03:31 ..

drwxrwxr-x 3 ubuntu ubuntu 2048 Sep 5 17:43 aircrack

drwxrwxr-x 3 775 ubuntu 4096 Mar 31 15:03 Angular

drwxrwxr-x 4 ubuntu ubuntu 1024 Apr 1 16:13 'Bash'

-rwxrw-r-- 1 ubuntu ubuntu 0 Jul 30 16:28 games

-rw------- 1 ubuntu ubuntu 12288 Jul 30 16:20 .swp

-rw-rw-r-- 1 ubuntu ubuntu 0 Sep 23 23:57 test

Linux中的权限

在Linux中创建的每个文件都有与之相关的某些属性,如所有权和权限。每个文件和目录的所有权涉及一个用户(所有者)和一个组。同样地,设置文件和目录权限的选项如下所示。

  • r是指阅读权限,值为4
  • w是写权限,值为2
  • x代表执行权限,值为1。

我们可以把这些权限结合起来,给文件或目录分配不同的访问级别。

  • **rwx:**它有完全的读、写和执行权限,值为7
  • **rw-:**它只有读和写的权限,值为6
  • **r-:**它只有读的权限,值为4
  • **r-x:**它只有读和执行的权限,值为5。

因此,每当我们想为所有者、组或其他用户允许某个文件或文件夹时,我们必须改变默认掩码。我们可以通过这个命令找出默认掩码。

ubuntu@ubuntu:~$ umask

0002

为了给一个文件或目录分配权限,我们给它设定umask值。下面是目录的权限和它们的umask值。

权限值 umask值

rwxrwxrwx 777 0000

rwxrwxr-x 775 0002

rwxrw-r-- 764 0013

rwxr-xr-x 755 0022

rw-r--r-- 644 0133

为了对照掩码值验证权限,将掩码值设为0022,并创建一个目录,使每个新目录的默认权限值为755

ubuntu@ubuntu:~$ umask 0022

ubuntu@ubuntu:~$ mkdir dir1

ubuntu@ubuntu:~$ ls -l

drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 24 16:46 dir1

以下是文件的权限和它们的掩码值。

权限值 umask值

rw-rw-rw- 666 0000

rw-rw-r-- 664 0002

rw-r--r-- 644 0022

现在将umask值设置为0022,并创建一个新文件。该文件将有644的权限。

ubuntu@ubuntu:~$ umask 0022

ubuntu@ubuntu:~$ touch file1

ubuntu@ubuntu:~$ ls -l file1

-rw-r--r-- 1 ubuntu ubuntu 0 Sep 24 16:32 file1

通过八进制符号的权限分配

现在使用0777 umask值创建一个文件和目录。创建的目录和文件将没有权限。

ubuntu@ubuntu:~$ umask 0777

ubuntu@ubuntu:~$ touch file2

ubuntu@ubuntu:~$ mkdir dir2

ubuntu@ubuntu:~$ ls -l

---------- 1 ubuntu ubuntu 0 Sep 24 16:53 file2

d--------- 2 ubuntu ubuntu 4096 Sep 24 16:53 dir2

为了给新的文件和目录分配完整的权限,将umask值设为0000

ubuntu@ubuntu:~$ umask 0000

ubuntu@ubuntu:~$ touch file3

ubuntu@ubuntu:~$ mkdir dir3

ubuntu@ubuntu:~$ ls -l

-rw-rw-rw- 1 ubuntu ubuntu 0 Sep 24 16:56 file3

drwxrwxrwx 2 ubuntu ubuntu 4096 Sep 24 16:55 dir3

通过符号符号的权限分配

使用符号选项而不是八进制值来设置文件权限。要使用符号选项设置完整的权限,请运行以下命令。

ubuntu@ubuntu:~$ umask a=rwx

ubuntu@ubuntu:~$ touch file4 && mkdir dir4

ubuntu@ubuntu:~$ ls -l

-rw-rw-rw- 1 ubuntu ubuntu 0 Sep 25 13:08 file4

drwxrwxrwx 2 ubuntu ubuntu 4096 Sep 25 13:08 dir4

要为用户(所有者)设置rw权限,请使用以下命令。

ubuntu@ubuntu:~$ umask u=rw

ubuntu@ubuntu:~$ touch file5 && mkdir dir5

ubuntu@ubuntu:~$ ls -l

-rw-rw-rw- 1 ubuntu ubuntu 0 Sep 25 13:35 file5

drw-rwxrwx 2 ubuntu ubuntu 4096 Sep 25 13:35 dir5

为该组设置umask权限如下。

ubuntu@ubuntu:~$ umask g=rx

ubuntu@ubuntu:~$ touch file6 && mkdir dir6

ubuntu@ubuntu:~$ ls -l

-rw-r--r-- 1 ubuntu ubuntu 0 Sep 25 13:37 file6

drw-r-xr-- 2 ubuntu ubuntu 4096 Sep 25 13:37 dir6

使用下面的命令为其他人设置umask权限。

ubuntu@ubuntu:~$ umask o=r

ubuntu@ubuntu:~$ touch file7 && mkdir dir7

ubuntu@ubuntu:~$ ls -l

-rw-r--r-- 1 ubuntu ubuntu 0 Sep 25 13:39 file7

drw-r-xr-- 2 ubuntu ubuntu 4096 Sep 25 13:39 dir7

查看当前umask的符号形式。

ubuntu@ubuntu:~$ umask -S

u=rwx,g=rx,o=r

掩码配置

umask中的权限只保留在当前会话或目录中。要永久地实施改变,请在其配置设置中设置改变。umask的配置设置可能因每个发行版而异;然而,要在Ubuntu中永久地添加umask值,请对bash.bashrc文件进行修改。在你喜欢的编辑器中打开该文件,包括如下所示的修改。

ubuntu@ubuntu:~$ sudo nano /etc/bash.bashrc

总结

Umask是一个有用的工具,可以为新创建的文件和目录分配特定的默认权限。这篇文章展示了如何使用umask位,以及针对读/写/执行权限的值。我们还演示了如何使用八进制和符号符号通过umask位来分配权限。