Linux中的umask是如何计算的?

Linux中的umask是如何计算的?

所以我知道umask可以使用这种格式限制特权用户umask ugo

我知道 read = 4、write = 2 和 exec = 1。但是,当我输入 时umask,它返回 4 位数字,即0022or 0073。我现在不明白这是如何工作的,因为有一个额外的数字。那个额外的数字是什么?是什么0022意思?

答案1

假设默认掩码 0666.0022 umask将使新掩码 0644 (0666-0022=0644) 意味着该组和其他人具有读取(无写入或执行)权限。

“额外”数字(第一个数字 = 0)指定没有特殊模式。

如果模式以数字开头,它将被解释为八进制,否则它意味着是象征性的。

0 是一个数字,1(对于粘性位)或 6(对于 SGID)也是如此。诸如此类的命令chmod可以通过其他方法调用,例如chmod ug+rw mydir向用户和组添加读写权限。请注意,本例中的模式 (ug+rw) 不以数字开头,因此不会被解释为八进制,而是象征性的。

en.wikipedia.org/wiki/Chmod#Symbolic_examples对于符号以及www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/了解一些特殊模式。

我不知道你会用 揭开第一位umask,但从技术上讲你可以。这可以解释为什么你几乎总是将其视为零。

归功于平克弗洛伊德x33

掩码的第一个数字涉及特殊权限,这些权限不太适合所有者/组/其他模型。当为文件权限提供四位数字时,第一个数字指的是这些特殊值:

4000 = SUID
2000 = SGID
1000 = sticky bit

SUID 位是 set-user-ID 的缩写,它使可执行程序以所有者的有效用户 ID (uid) 运行——换句话说,无论谁执行它,该程序都以所有者的权限执行。这在执行需要 root 权限但由普通用户运行的程序中很常见:passwd就是一个这样的例子。

SGID 位是 set-group-ID 的缩写,非常相似,但与有效的团体所有者的 id (gid)。

粘性位有点复杂,如果您想了解更多信息,可以阅读 的联机帮助页sticky

这些位也可以与目录一起使用,但它们的含义会发生变化。

我不相信你实际上可以设置umask允许你默认启用任何这些额外的位,但你可能永远不想这样做。

归功于用户470379

相关内容