chmod -R 因某种原因导致子文件夹中的文件无法读取

chmod -R 因某种原因导致子文件夹中的文件无法读取

我在设置一些 WordPress 主题时调整了权限,并运行chmod 664 -R theme-dir/*它在目录根目录中的文件上运行良好,但是当我执行以下操作时,子目录中的所有文件现在都读取如下内容ls -l

?---------  ? ? ? ?            ? core_functions.php
?---------  ? ? ? ?            ? css
?---------  ? ? ? ?            ? custom_functions.php
?---------  ? ? ? ?            ? images
?---------  ? ? ? ?            ? import_settings.php
?---------  ? ? ? ?            ? js
?---------  ? ? ? ?            ? options_trim.php
?---------  ? ? ? ?            ? page_templates
?---------  ? ? ? ?            ? post_thumbnails_trim.php
?---------+ ? ? ? ?            ? shortcodes

我无法 cd 到任何子目录,也无法删除它们。我从未见过这样的事情,有人遇到过类似的事情吗?

答案1

访问目录的内容(或更具体地说,除文件名之外的文件元数据)需要该目录设置执行位。

您的递归 chmod 删除了该权限,因此您失去了该访问权限。如果您使用 选项,-R最好chmod避免使用权限的数字版本,而是运行(使用您所需的状态作为示例)chmod -R ug=rwX,o=rX。大写的 X 表示仅在具有至少一个设置的目录或文件上设置 X 位x。此外,除非您确实需要组用户进行写入,否则您可能希望使用 644(u=rwX,go=rX)。

答案2

来自Wordpress 文档

如果您具有服务器的 shell 访问权限,则可以使用以下命令以递归方式更改文件权限:

对于目录:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

对于文件:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

相关内容