在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位来分配权限。