当我使用时mkdir -pm 764 a/b/c
,只c
获得了 764 权限,而a
具有b
默认权限。为什么会这样呢?为什么不是所有目录都获得764权限?
答案1
该mkdir
实用程序创建一个目录。与它一起使用时,-m
会创建目录并chmod
以给定的权限有效地在该目录上运行(尽管这不会在两个步骤中发生,但这在某些情况下可能很重要)。
使用-p
,将创建任何尚不存在的中间目录。给定的模式-m
仍然仅适用于路径名中的姓氏,因为这是您要创建的目录(创建中间目录是为了允许使用给定模式创建该目录)。
这POSIX 标准mkdir
假设每个中间目录都应该使用 shell 的 umask 值的(S_IWUSR|S_IXUSR|~filemask)&0777
模式创建。filemask
在“应用程序使用”部分,它说
[...] 对于由 创建的中间路径名组件
mkdir
,模式是默认修改的,u+ wx
以便无论文件模式创建掩码如何,都可以始终创建子目录;如果中间目录需要不同的最终权限,可以随后使用 进行更改chmod
。
这意味着中间目录的模式设置为允许您创建可能没有用户写入或执行权限的目录。如果中间目录也没有被授予执行和/或写入权限,则将无法创建目录路径的最后部分。
根据您的具体情况,使用
mkdir -p -m 764 a/b/c
chmod 764 a/b
chmod 764 a
如果您确定以前不存在任何目录,请使用
mkdir -p -m 764 a/b/c
chmod -R 764 a