什么是“umask”,它是如何工作的?

Modified on: Sat, 09 Jun 2018 01:05:23 +0800

我相信umask可以控制文件权限,但不完全理解它。

终端中运行umask 0644后,我无法读取我创建的文件命令行文本编辑器nano。我注意到该文件的权限设置为0022而不是默认的0755

umask是如何工作的?我想我可以从07777 - 6 = 17 - 4 = 3删除umask中的每个数字,所以我期望权限为0133,但显然情况并非如此。

  1. 什么是umask?向我解释,就像我是一个“Linux noob”
  2. 如何用umask计算?
  3. umask的用例是什么?
  4. 醇>

最佳答案

umask充当应用程序无法在文件上设置的一组权限。它是进程的文件模式创建掩码,无法为目录本身设置。大多数应用程序不会创建具有执行权限设置的文件,因此它们将具有666的默认值,然后由umask修改。

由于您已设置umask以删除所有者的读/写位以及其他人的读取位,因此应用程序中的默认值(例如777)将导致文件权限为133。这意味着您(和其他人)可以执行该文件,而其他人则可以写入该文件。

如果你想让除了所有者之外的任何人都不能读/写文件,你应该使用像077这样的umask关闭这些组的权限。其他

相反,000的umask将使新创建的目录对每个人都可读,可写和可下载(权限将是777)。这样的umask是非常不安全的,你永远不应该将umask设置为000

Ubuntu上的默认umask是022,这意味着每个人都可以读取新创建的文件,但只能由所有者写入:

user@computer:~$ touch new-file-name
user@computer:~$ ls -dl new-file-name
-rw-r--r-- 1 user user 0 Apr  1 19:15 new-file-name

查看和修改umask

要查看当前的umask设置,请打开终端并运行命令:

umask

要将当前shell的umask设置更改为其他内容,例如077,请运行:

umask

要测试此设置是否有效,您可以创建文件(现有文件的文件权限不受影响)并显示有关该文件的信息,运行:

umask 077

umask设置由从同一shell启动的进程继承。例如,通过在终端中执行gedit来启动文本编辑器GEdit,并使用gedit保存文件。您会注意到新创建的文件受到与终端中相同的umask设置的影响。

使用案例:多用户系统

如果您所在的系统由多个用户共享,则希望其他人无法读取您主目录中的文件。为此,umask非常有用。编辑~/.profile并添加一个新行:

user@computer:~$ touch new-file-name
user@computer:~$ ls -dl new-file-name
-rw------- 1 user user 0 Apr  1 19:14 new-file-name

您需要重新登录才能使~/.profile中的此umask更改生效。接下来,您需要通过删除世界的读取,写入和执行位来更改主目录中文件的现有文件权限。 打开终端并执行:

umask 007

如果您希望将此umask设置应用于系统上的所有用户,则可以在/etc/profile编辑系统范围的配置文件。

作者:Community,ajmitch

相关问答

添加新评论