Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何更改路径中目录的chmod_Linux_Perl - Fatal编程技术网

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

Linux 如何更改路径中目录的chmod,linux,perl,Linux,Perl,Q如何将a/的chmod设置为755 假设我有一个路径a/b/c/d/来创建 我可以调用mkdir-p a/b/c/d/,它将在路径 现在我想将a/a/b/a/b/c/&a/b/c/d/的chmod设置为755 注意mkdir-pm 0755 a/b/c/d/将仅为最后一个文件夹将chmod设置为755,请使用: (umask 022; mkdir -p /a/b/c/d) 设置umask可确保为命令创建的任何目录上的组和其他目录重置写入位(当然,对预先存在的目录没有影响)。然后根据需要使用7

Q如何将
a/
的chmod设置为
755

假设我有一个路径
a/b/c/d/
来创建
我可以调用
mkdir-p a/b/c/d/
,它将在路径
现在我想将
a/
a/b/
a/b/c/
&
a/b/c/d/
的chmod设置为
755

注意
mkdir-pm 0755 a/b/c/d/
将仅为最后一个文件夹将chmod设置为
755
,请使用:

(umask 022; mkdir -p /a/b/c/d)

设置
umask
可确保为命令创建的任何目录上的组和其他目录重置写入位(当然,对预先存在的目录没有影响)。然后根据需要使用
755
权限创建目录。括号使用了一个子shell,因此只有
mkdir
命令受
umask
设置的影响。(默认情况下,我使用
umask 022
;我通常不介意人们阅读文件,但我不希望他们在未经我许可的情况下更改文件。)

如果已经创建了目录,您可以使用此bash代码段更改权限:

path=a/b/c/d
while [[ -n $path ]]; do
    chmod 755 $path
    path=${path%[^/]*}
done
perldoc-f chmod chmod列表

更改文件列表的权限。列表的第一个元素必须是数字模式,它可能应该是一个八进制数字,而绝对不应该是一个八进制数字串:0644可以,但“0644”不行

试着这样做: 注 注意chmod是一个LIST操作符,意味着您可以向其传递如下列表(或数组):

$cnt=chmod 0755,“foo”,“bar”


如果您目前在'a'的父目录中,我们可能会这样做

chmod 755 a ; find a/ -type d -exec chmod 755 {} \;

不适合我。下面是对他的答案的修改,确实有效。子字符串删除已修复,使用此方法,原始路径应以尾部结尾
/

您是否尝试过
chmod-R 755 a/
?@SagarRakshe:that(
chmod-R 755 a/
)也会更改目录中文件的权限(如果有)。如果重新创建了
a
,这不是问题;如果
a
已存在并包含其他文件或目录,则可能是个问题。
chmod-R go=rX a
对于组和其他,将设置读取标志,清除写入标志,并从用户复制exec标志。不起作用,因为umask从默认值删除权限,在我的例子中,哪一个是700?您的默认取消掩码设置为700?坦白地说,我觉得这很难相信。这意味着您将无法访问您创建的文件和目录,但其他人也将拥有文件的读写权限和目录上的搜索权限。不,伙计,创建目录时的默认权限是700,所以我不能使用umask将其设置为755,因为umask只能减去权限,而不能添加权限。这是一个奇怪的系统。是哪一个?在大多数系统上,
mkdir
命令创建的目录具有由
umask
修改的0777权限。如果你真的将它们创建为私有,那么你必须机械地沿着公认答案中的路径前进。它的Webfaction,它们在周五之前设置755为权限,但现在设置为700,并且破坏了我今天对客户的一次演示,因为一切都失败了。我使用的是perl版本
my$p='';foreach my$j(split(“/”,$path)){$p.=“$j/”chmod 0755,“$p”}
chmod 755 a ; find a/ -type d -exec chmod 755 {} \;
path=a/b/c/d/
while [[ -n $path ]]; do
    chmod 755 $path
    path=${path%/*}
done