在Linux和Unix操作系统上,所有新文件都使用一组默认权限创建。umask实用程序允许您查看或设置文件模式创建掩码,该掩码确定新创建的文件或目录的权限。 Linux权限 在进一步讨论之前,让我们简要介绍一下Linux权限模式。 在Linux中,每个文件都与一个所有者和一个组相关联,并为三个不同类别的用户分配了访问权限:
有三种权限类型适用于每个类:
此概念允许您指定允许哪些用户读取文件,写入文件或执行文件。 要查看文件权限,请使用ls命令: linuxidc@linuxidc:~/www.linuxidc.com$ ls -l linuxidc.com.py 输出示例: ![]() -rw-r--r-- 1 linuxidc linuxidc 53 Jul 1503: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:
以数字表示法表示时,权限可以有三个或四个八进制数字(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公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx 本文永久更新链接地址:https://www.linuxidc.com/Linux/2019-07/159533.htm ![]() ![]() 支持就点下在看并转发朋友圈吧 ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Linux公社,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |