如果我理解正确,文件权限有一个关联的 3 位数字,用于指定读/写/执行权限。
umask 值是从默认值中减去的默认“掩码”。那么对于 0022 的 umask 值,777 的默认值将变为 755?
这是否正确,如果正确,umask 值中的第一个 0 是多少?
Alx*_*lxs 19
您的示例中未使用第一个数字 0。umask 从右到左读取,尾随零被忽略。但是,它可用于设置特殊权限,例如sticky bit
、Set GUID
,Set UID
如下所示。
0755 —- None of the special bits set
1755 —- Sticky bit set
2755 —- SGID bit set
4755 —- SUID bit set
Run Code Online (Sandbox Code Playgroud)
您是正确的,0022 的 umask 将屏蔽默认的 777(目录)权限,使其在新创建的目录上变为 755。
八进制编号的工作方式类似于前三组:用户、组、世界/其他。
读/写/执行rwx
值以八进制形式表示,对应的值最多可以为 7:
4 - Read
2 - Write
1 - Execute
Run Code Online (Sandbox Code Playgroud)
所以对于 0755: 0 被忽略。7 (4+2+1) 等于user
/owner 的读取、写入和执行。并且 5 (4+1) 等于 read 和 execute group
,其余的 5 (也是 4+1) 赋予other
/world读取和执行权限。