解析 Linux Umask 命令
在创建新文件或目录时,Linux操作系统会自动分配默认文件权限。umask(用户文件模式创建掩码)可用于定义并分配每个用户的默认权限。
在本教程中,我们将了解umask命令以及如何使用它来定义默认文件权限。
什么是umask及其工作原理
术语“掩码”定义了权限分组,它控制了如何为新创建的文件和目录设置权限。umask命令用于为文件和目录分配默认权限。
umask一词可以指以下两个内容之一:
- 用户定义的文件创建掩码。文件创建掩码可用于选择如何控制权限。此掩码与默认系统权限相关联并更新它们。umask命令应用此掩码。
- 设置默认umask值的umask命令,可以使用八进制格式或符号格式。
umask命令定义了默认的系统文件和目录权限,分为三个类别:
- 用户:定义所有者权限。创建文件或文件夹的用户是默认所有者。
- 组:为Linux组定义组权限,这些组共享相同的文件权限或目录。
- 其他:为不是所有者也不是组的任何人定义权限。设置这些权限后,任何人都可以访问文件和文件夹。通常称它们为全球可读文件和目录。
以下图解释了umask和权限的工作原理:
-
用户权限 - 用户对文件具有读和写权限。
-
组权限 - 组对文件具有读和写权限。
-
其他权限 - 其他人只对文件具有读权限。
-
硬链接 - 为此文件创建了1个硬链接。
-
所有者用户名 - 所有者用户的名称。
-
所有者组 - 所有者组的名称。
-
大小 - 文件的总大小(以字节为单位)。
-
上次修改的日期/时间 - 文件的上次修改日期和时间。
-
文件/目录名称 - 文件的名称。
umask中的每个位对应于一个八进制umask值。例如,rw-rw-r
具有以下值:
- 所有者:rw- = 4+2+0=6
- 组:rw- = 4+2+0=6
- 其他:r-- = 4+0+0=4
掩码中的RWX表示读、写和执行的能力。执行权限不适用于文件。
umask和chmod之间的区别
umask命令和chmod命令都用于在Linux中设置权限,但它们在本质上有所不同。
umask命令更改默认权限,因此使用此命令设置的权限会自动应用于所有新创建的文件和目录。
chmod命令更改现有文件和文件夹的权限。例如,如果您将名为services
的文件的所有权分配给用户tom
和组adm
,则更改将仅限于services
文件。它不会影响系统上的任何其他文件。
umask命令会影响整个系统的权限,而chmod命令只会影响指定文件的权限。
umask命令
umask命令用于在Linux计算机上设置文件和文件夹的默认umask值。您的系统上的所有新创建的文件和目录都将使用umask命令定义的权限。
使用umask命令而不带任何选项来检查当前掩码:
umask
0002表示第一个数字0被称为[粘附位] 这是一种特殊的安全功能。接下来的三个数字表示文件或目录umask的八进制值。
umask命令语法
umask命令的基本语法:
umask [-p] [-S] [mask]
umask选项
您可以在umask中使用以下选项:
选项 | 描述 |
---|---|
mask |
以八进制格式表示的新掩码。 |
-p |
使用umask命令显示当前掩码。您可以将其复制以供将来参考。 |
-S |
显示当前掩码的符号umask值。 |
掩码值
掩码值以符号和数字格式表示。
符号格式以rwx(读-写-执行)格式表示。最左边的字符用于读权限,中间的字符用于写权限,最右边的字符用于执行权限。例如,如果对于所有者,符号umask设置为r--
,那么所有者只对特定文件或目录具有读权限。
八进制模式umask值在以下表格中描述:
权限 | 八进制值 | 二进制值 | 描述 |
---|---|---|---|
- | 0 | 000 | 没有权限 |
-x | 1 | 001 | 仅执行权限 |
-w- | 2 | 010 | 仅写权限 |
-wx | 3 | 011 | 写和执行权限 |
r- | 4 | 100 | 仅读权限 |
r-x | 5 | 101 | 读和执行权限 |
rw- | 6 | 110 | 读和写权限 |
rwx | 7 | 111 | 所有权限-读、写和执行权限 |
文件和目录的umask值
在更改系统上的umask值之前,您必须了解其对默认文件和文件夹权限的影响。
文件的默认系统权限是666(rw-rw-rw-),目录的默认系统权限是777(rwxrwxrwx)。
默认掩码值为002。它将文件夹权限更改为777-002 = 775(rwxrwxr-x)并将文件权限更改为666-002 = 664(rw-rw-r--)。
通过从默认掩码值(777和666)中减去默认掩码值来得出最终的umask值。
设置Umask值
要将所有者、组和其他人的文件夹权限设置为只读,我们需要将umask设置为333:
umask 0333
您还可以使用符号值来设置umask:
umask u=rwx,g=rwx,o=r
其中:
u
设置用户/所有者的权限。
g
设置组的权限。
o
设置其他人的权限。
该命令仅设置指定的文件权限。例如,对于其他人,我们只希望分配读权限,因此我们指定了只读(r)的符号值。
结论
在本教程中,我们学习了umask命令以及如何使用它。在设置umask值时必须非常小心,因为它会影响整个系统的安全性。