我正在尝试递归更改项目中所有文件和目录的权限。
我在 magento 论坛上发现一个帖子说我可以使用这些命令:
find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -Rf 777 var
chmod -Rf 777 media
它为find ./ -type d | xargs chmod 755
.
该命令find ./ -type f
返回了很多文件,但chmod: access to 'fileXY.html' not possible: file or directory not found
如果我执行find ./ -type f | xargs chmod 644
.
我该如何解决这个问题?
PS:我知道他建议我的 var 和 media 文件夹使用 777 权限,这是一个安全隐患,但我们还应该使用什么?
我猜您遇到的文件名称包含导致
xargs
将它们拆分的字符,例如空格。为了解决这个问题,假设您正在使用一个版本find
并且xargs
支持适当的选项(起源于 GNU 变体,而不是由 POSIX 指定),您应该使用以下命令:或者更好,
它的优点是更短,只使用一个进程,并且受POSIX
chmod
支持(有关详细信息,请参阅此答案)。您的问题相当广泛
media
,var
如果您对特定答案感兴趣,我建议您将其作为一个单独的问题提出,并提供有关您使用目录的更多信息。怎么样:
这是规范的可移植解决方案,甚至可以处理文件名中的换行符。