我用命令创建了一些目录mkdir -pm 700 /tmp/a/b/c
我惊讶地发现它/tmp/a
拥有权限775
而不是700
我所请求的权限。
是否有某种原因mkdir
仅将指定模式应用于最后创建的目录并忽略其父目录?
答案1
这是 POSIX 所要求的标准为了mkdir
:
对于-p
选项:
创建任何缺失的中间路径名组件。
其次是:
然后使用以下参数调用 chmod() 函数:
- 与 mkdir() 调用中相同的路径参数
- 值 (S_IWUSR|S_IXUSR|~filemask)&0777 作为模式参数,其中 filemask 是进程的文件模式创建掩码
这意味着它仅chmod
在路径中的最终目录上运行。