您的位置:首页 > 运维架构 > Linux

Linux中的umask命令图文示例

2019-07-24 00:00 1261 查看

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

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

Linux权限

在进一步讨论之前,让我们简要介绍一下Linux权限模式。

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

  • 文件所有者。
  • 组成员。
  • 其他用户。

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

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

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

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

linuxidc@linuxidc:~/www.linuxidc.com$ ls -l linuxidc.com.py

输出示例:

 

-rw-r--r-- 1 linuxidc linuxidc 53 Jul 15 03:18 linuxidc.com.py
|[-][-][-]    [------] [---]
| |  |  |        |       |
| |  |  |        |       +-----------> 组
| |  |  |        +-------------------> 所有者
| |  |  +----------------------------> 其他权限
| |  +-------------------------------> 组权限
| +----------------------------------> 所有者权限
+------------------------------------> 文件类型

先详细描述第一行其中每项代表的含义:
-rw-r–r–
1) 第一个字符表示文件类型,可以是常规文件(-)、目录(d)、符号链接(l)或任何其他特殊类型的文件。接下来的9个字符代表权限,每组3个字符。第一组显示所有者权限,第二组显示组权限,最后一组显示所有其他人的权限。
2)rw-表示可读可写,代表所有者u的权限。
3)第一个r–表示可读,代表所属组g的权限(相同权限的人放在一起就是一组);第二个r–表示可读,代表其他人o的权限。
r 读 w 写 x 执行
数字2表示该文件被调用次数
第一个linuxidc表示所有者u
第二个linuxidc表示所属组g,在这里表示和root一个组的其他用户
53是文件大小,单位是字节(byte)
Jul 15 03:18表示文件最后一次修改时间
linuxidc.com.py是文件名

还有另外三种特殊的文件权限类型:setuid、setgid和Sticky Bit。

如果我们使用数字表示法表示文件权限,我们将得到数字644:

  • 所有者: rwx = 4+2+0 = 6
  • 组: r-- = 4+0+0 = 4
  • 其他人: r-- = 4+0+0 = 4

以数字表示法表示时,权限可以有三个或四个八进制数字(0-7)。第一个数字表示特殊权限,如果省略则表示没有为文件设置特殊权限。

可以使用chown命令使用chmod命令和所有权更改文件权限。

了解umask

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

可以使用umask实用程序修改默认的创建权限。

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

如果希望根据每个用户指定不同的值,请编辑用户的shell配置文件,例如~/.bashrc 或 ~/.zshrc。(您还可以通过运行umask后面跟着所需的值来更改当前会话umask值。

要查看当前掩码值,只需输入umask,不带任何参数:

linuxidc@linuxidc:~/www.linuxidc.com$ umask

输出示例:

0022

第一个 0 表示的是特殊权限位,对 umask 来说,有效的设定值只有后三位数。

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

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

文件:666  -  022 = 644。所有者可以读取和修改文件。 组和其他人只能读取文件。

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

您还可以使用-S选项以符号表示法显示掩码值:

linuxidc@linuxidc:~/www.linuxidc.com$ umask -S

输出示例:

u=rwx,g=rx,o=rx

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

设置掩码值

可以使用八进制或符号表示法设置文件创建掩码。要使更改永久化,请在/etc/profile文件等全局配置文件中设置新的umask值,这将影响所有用户或用户的shell配置文件,如,~/.profile,~/.bashrc 或 ~/.zshrc会影响用户。用户文件优先于全局文件。

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

假设我们想为新创建的文件和目录设置更严格的权限,以便其他人无法cd到目录和读取文件。我们想要的权限是目录750和文件640。

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

Umask值:777-750 = 027

以数字表示法表示的所需umask值是027。

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

sudo nano /etc/profile

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

umask 027

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

source /etc/profile

要验证新设置,我们将使用mkdir和touch创建一个新文件和目录:

mkdir linuxidc
touch linuxmi

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

输出示例:

drwxr-x---  2 linuxidc linuxidc 4096 Jul 23 22:48 linuxidc/
-rw-r-----  1 linuxidc linuxidc    0 Jul 23 22:49 linuxmi

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

总结

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

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

如果您有任何疑问,请在下面留言。

更多Linux命令相关信息见Linux命令大全 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=16

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息