gpt4 book ai didi

linux - 为什么 umask 结果与权限位不同

转载 作者:太空狗 更新时间:2023-10-29 11:45:04 24 4
gpt4 key购买 nike

我想创建一个带有权限位的文件:125 => --x-w-r-x。

所以umask值应该是=> 666-125 = 541

所以当我在下面写命令时;

umask 541
touch /tmp/newfile
ls -l /tmp/newfile

the result is : --w--w-rw-

为什么结果不是 --x-w-r-x ?

提前致谢...

最佳答案

普通文件(与目录或符号链接(symbolic link)相对)的默认起始位是 0666。让我们将其分解为组件权限:

  • 0 表示没有特殊权限(如setuid (4), setgid (2), or sticky (1)) 已设置
  • 第一个6(或二进制的110)意味着用户得到r(第一个1) 和 w(第二个 1)但不是 x(0)默认
  • 第二个 6 与第一个 6 的含义相同,但对于 group 而不是 user >
  • 第三个 6 与第一个 6 的含义相同,但对于 others 而不是 user

现在您想更改此默认值到 0125:

  • 0 表示同上
  • 1(或二进制的001)意味着用户只得到x但没有 rw
  • 2(或二进制的010)意味着只得到w但没有 rx
  • 5(或二进制的101)表示others得到rx 但没有 w

不幸的是,umask 允许的唯一操作是binary AND NOT。它不允许整数减法。因此,由于您是从 0666 (000 110 110 110) 开始的,所以根本没有办法使用 AND NOT 来获得其中任何一个 0s 变成 1s.

使用 umask 最接近的是 --- -w- r--0024 通过屏蔽掉 110 (6) 来自 user 默认值,100 (4) 来自 group 默认值,010 (2) 来自 others 默认值。然后你创建的每个新文件都将是

umask 642
touch file.txt

000 110 110 110 &~
000 110 100 010
--- --- --- ---
000 000 010 100
0 0 2 4 --- -w- r-- file.txt

如果您希望新文件也具有 x 权限,则必须在第二步中添加它们(或使用 touch 以外的其他方式),例如: chmod u+x,o+x file.txt.

::编辑::您经常看到奇数 umask 的原因是因为默认的 directory 权限是 0777,所以用户可能想要指定发生了什么x 权限。但无论您在 umask 中指定什么 x 位,它都不会影响文件权限:

umask 0027
touch file.txt

000 110 110 110 &~
000 000 010 111
--- --- --- ---
000 110 100 000
0 6 4 0 rw- r-- --- file.txt

mkdir directory

000 111 111 111 &~
000 000 010 111
--- --- --- ---
000 111 101 000
0 7 5 0 rwx r-x --- directory/

因此您可以在创建新目录时在umask 中指定x 掩码,但它们不会影响文件创建。

关于linux - 为什么 umask 结果与权限位不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com