Answers:
假定默认掩码为0666。0022 umask
将使新掩码为0644 (0666-0022 = 0644),这意味着该组和其他成员具有读取(无写或执行)权限。
“额外”数字(第一个数字= 0)指定没有特殊模式。
如果mode以数字开头,则它将被解释为八进制,否则将被视为符号。
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
,但是从技术上讲您可以。它可以解释为什么您几乎总是将其视为零。
遮罩的第一位数字处理的特殊权限不太适合所有者/组/其他模型。为文件许可权提供四位数字时,第一位引用这些特殊值:
4000 = SUID
2000 = SGID
1000 = sticky bit
SUID位是set-user-ID的缩写,它使可执行程序以所有者的有效用户ID(uid)运行-换句话说,无论由谁执行,该程序都将以所有者的权限执行。这在执行需要root特权但要由普通用户运行的程序中很常见:passwd
就是这样的例子。
SGID位是set-group-ID的缩写,非常相似,但是以所有者的有效组 ID(gid)运行。
粘性有些复杂,如果您需要更多信息,可以阅读的联机帮助页sticky
。
这些位也可以与目录一起使用,但是它们的含义会改变。
我不相信您实际上可以将设置umask
为允许您默认情况下启用所有这些额外的位,但是您可能永远也不想这样做。
chmod 6777 dropbox
。而且,顺便说一下chmod ug+s
。)
0666-0022
,是0666 & ~0022
。
man 2 umask
(相应的系统调用)“仅使用的文件许可权mask
”。在中bash
,umask 1000生成错误:“八进制数超出范围”。那么为什么要多加0呢?我认为这只是为了表明数字是八进制的。