创建文件夹层次结构并设置权限

create hierarchy of folders, and set permissions

mkdir 有选项:

我的问题是,-m 755 仅应用于叶目录。

mkdir -m 755 -p a/b/c -> c 的模式为 755,但 aa/b 的模式为 700。(我希望 a 和 a/b 也是 755 )

有简单的解决方法吗? (或者只是迭代 parents 和 chmod 每个?)

mkdir 的行为有点出乎意料,我还假设 -m 标志会影响所有创建的目录,而不仅仅是叶节点。

我看到了两个简单的方法:

  1. $ (umask 022; mkdir -p a/b/c)
  2. $ install -d -m 755 a/b/c

umask 控制由 shell 完成的所有文件创建,并且是权限位集的掩码(这使得值有点难以使用)。将这两个命令放在括号中意味着它只会对该子 shell.

有效

使用安装工具是另一种选择。使用 -d 选项,它的行为方式与 mkdir -p 相同,但 -m 标志将用于所有目录,而不仅仅是叶节点。 install 是 coreutils 包的一部分,很可能在任何系统上都可用。