如何在路径中更改目录的chmod

时间:2015-10-04 06:54:51

标签: linux perl

问如何设置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仅适用于最后一个文件夹

5 个答案:

答案 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)

perldoc -f chmod

  

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对我不起作用。这是对他有效答案的修改。子字符串删除已修复,采用这种方法,原始路径应以结尾/结尾。