根据 umask 值显示文件和目录权限

根据 umask 值显示文件和目录权限

我有关于使用 umask 值来设置默认文件和目录权限的主页,但我遇到了以下问题:

如果我有 umask = 0541

  • 0666 - 0541 = 0125, 文件权限:---x-w-r-x
  • 0777 - 0541 = 0236,目录权限:d-w--wxrw-

但在linux终端上的实际结果:

  • d-w--wxrw对于目录
  • --w--w-rw-对于文件请给我解释一下!

答案1

请注意,umask 不是减法,而是基于 umask 的逻辑与运算。

考虑二进制的权限:

所以 0666 的许可是

110 110 110

现在 umask 0541 是

101 100 001

为了计算结果,我们对 umask 求反:

010 011 110

然后在获得许可的情况下进行 AND 操作。

所以

110 110 110  AND
010 011 110
=== === ===
010 010 110

这映射到 -w- -w- rw-

答案2

像这样考虑一下,如果你有默认权限 666 意味着你只有r+w用户、组和其他人的权限,并且通过 umask541你想删除权限 r+x,r,x。

对于用户:

By default you can read+write and by umask you want to remove read+executable 
permissions, but it will never happen because initially file has no executable 
permissions. So only read permission will be removed.

对于团体:

read permission will removed

为他人:

There is no executable permission in the file, so there will be no change.

同样的概念也适用于目录。

相关内容