我有关于使用 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.
同样的概念也适用于目录。