问如何设置a/
a/b/
a/b/c/
&的chmod。 a/b/c/d/
至755
说我有一条路径a/b/c/d/
来创建
我可以调用mkdir -p a/b/c/d/
,它将创建路径
中的每个目录
现在我想设置a/
a/b/
a/b/c/
&的chmod。 a/b/c/d/
至755
注意mkdir -pm 0755 a/b/c/d/
会将chmod设置为755
仅适用于最后一个文件夹
答案 0 :(得分:3)
使用:
(umask 022; mkdir -p /a/b/c/d)
设置umask
可确保在命令创建的任何目录上为组和其他目标重置写入位(当然,这对预先存在的目录没有影响)。然后根据需要使用755
权限创建目录。括号使用子shell,因此只有mkdir
命令受umask
设置的影响。 (我默认使用umask 022
;我通常不介意人们阅读文件,但我不希望他们在未经我许可的情况下更改它们。)
答案 1 :(得分:3)
如果已创建目录,您可以使用此bash片段更改权限:
path=a/b/c/d
while [[ -n $path ]]; do
chmod 755 $path
path=${path%[^/]*}
done
答案 2 :(得分:2)
chmod LIST
更改文件列表的权限。列表的第一个元素必须是数字模式,它应该是一个八进制数,并且绝对不应该是八进制数字的字符串:0644没关系,但“0644”不是。
chmod 0777, "test.txt";
注意chmod是一个 LIST 运算符,这意味着您可以传递一个列表(或数组),如下所示:
$ cnt = chmod 0755,“foo”,“bar”;
答案 3 :(得分:0)
如果您目前位于'a'的父目录中,我们可能会这样做
chmod 755 a ; find a/ -type d -exec chmod 755 {} \;
答案 4 :(得分:0)
path=a/b/c/d/
while [[ -n $path ]]; do
chmod 755 $path
path=${path%/*}
done
buff's answer对我不起作用。这是对他有效答案的修改。子字符串删除已修复,采用这种方法,原始路径应以结尾/
结尾。