Linux 如何更改路径中目录的chmod
Q如何将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
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