简单来说,“掩码”和“模式”有什么区别?据我所知,如果文件有0755
文件模式的掩码,那么文件模式是否7022
正确?它基本上是倒数?
答案1
文件有模式,在创作时面具将根据请求的模式确定模式。掩码的工作原理类似于模板,最好使用二进制表示来说明。
(常见的八进制整数格式)表示umask
为0002
000 000 000 010
二进制形式,或
--- --- --- -w-
以符号形式。
假设用户要创建一个文件,模式是0777
默认的(对于可执行文件),但掩码将以某种方式被“减去”。这会导致位w
被删除。
--- rwx rwx rwx (mode)
--- --- --- -w- (mask)
_______________ -
--- rwx rwx r-x == 000 111 111 101 == 0775
对于常规文件(不可执行文件),请求的模式没有x
(可执行)位,即0666
,因此掩码将导致:
--- rw- rw- rw- (mode)
--- --- --- -w- (mask)
_______________ -
--- rw- rw- r-- == 000 110 110 100 == 0664
后者在目录列表中很常见(其中不显示具有 SUID/SGID 位的第一个八位字节),例如:
-rw-rw-r-- 2 gert gert 228 Mar 20 2012 .vimrc
当然,您随时可以使用该chmod
命令来更改这些模式,在编辑时不会考虑 umask。