所以我知道umask
可以使用这种格式限制特权用户umask ugo
。
我知道 read = 4、write = 2 和 exec = 1。但是,当我输入 时umask
,它返回 4 位数字,即0022
or 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