首页 > 解决方案 > 创建文件夹层次结构,并设置权限

问题描述

mkdir有选项:

对我来说问题是,这-m 755仅适用于叶子目录。

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

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

标签: bashmkdir

解决方案


这有点来自 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 包的一部分,很可能在任何系统上都可用。


推荐阅读