创建文件夹层次结构并设置权限
create hierarchy of folders, and set permissions
mkdir
有选项:
-p
如果缺少 则创建所有 parent 目录
-m
更改用户权限。
我的问题是,-m 755
仅应用于叶目录。
mkdir -m 755 -p a/b/c
-> c
的模式为 755,但 a
和 a/b
的模式为 700。(我希望 a 和 a/b 也是 755 )
有简单的解决方法吗? (或者只是迭代 parents 和 chmod 每个?)
mkdir 的行为有点出乎意料,我还假设 -m 标志会影响所有创建的目录,而不仅仅是叶节点。
我看到了两个简单的方法:
$ (umask 022; mkdir -p a/b/c)
$ install -d -m 755 a/b/c
umask 控制由 shell 完成的所有文件创建,并且是权限位集的掩码(这使得值有点难以使用)。将这两个命令放在括号中意味着它只会对该子 shell.
有效
使用安装工具是另一种选择。使用 -d 选项,它的行为方式与 mkdir -p 相同,但 -m 标志将用于所有目录,而不仅仅是叶节点。 install 是 coreutils 包的一部分,很可能在任何系统上都可用。
mkdir
有选项:
-p
如果缺少 则创建所有 parent 目录
-m
更改用户权限。
我的问题是,-m 755
仅应用于叶目录。
mkdir -m 755 -p a/b/c
-> c
的模式为 755,但 a
和 a/b
的模式为 700。(我希望 a 和 a/b 也是 755 )
有简单的解决方法吗? (或者只是迭代 parents 和 chmod 每个?)
mkdir 的行为有点出乎意料,我还假设 -m 标志会影响所有创建的目录,而不仅仅是叶节点。
我看到了两个简单的方法:
$ (umask 022; mkdir -p a/b/c)
$ install -d -m 755 a/b/c
umask 控制由 shell 完成的所有文件创建,并且是权限位集的掩码(这使得值有点难以使用)。将这两个命令放在括号中意味着它只会对该子 shell.
有效使用安装工具是另一种选择。使用 -d 选项,它的行为方式与 mkdir -p 相同,但 -m 标志将用于所有目录,而不仅仅是叶节点。 install 是 coreutils 包的一部分,很可能在任何系统上都可用。