为什么 `mkdir -pm` 没有设置我请求的权限?

为什么 `mkdir -pm` 没有设置我请求的权限?

我用命令创建了一些目录mkdir -pm 700 /tmp/a/b/c

我惊讶地发现它/tmp/a拥有权限775而不是700我所请求的权限。

是否有某种原因mkdir仅将指定模式应用于最后创建的目录并忽略其父目录?

答案1

这是 POSIX 所要求的标准为了mkdir

对于-p选项:

创建任何缺失的中间路径名组件。

其次是:

然后使用以下参数调用 chmod() 函数:

  1. 与 mkdir() 调用中相同的路径参数
  2. 值 (S_IWUSR|S_IXUSR|~filemask)&0777 作为模式参数,其中 filemask 是进程的文件模式创建掩码

这意味着它仅chmod在路径中的最终目录上运行。

相关内容