Назад | Перейти на главную страницу

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

Я не могу перейти ни в один из подкаталогов, и я также не могу их удалить. Я никогда не видел ничего подобного, кто-нибудь сталкивался с чем-то подобным?

Для доступа к содержимому (или, более конкретно, к метаданным файла, за исключением имени файла) каталога требуется, чтобы в каталоге был установлен бит выполнения.

Ваш рекурсивный chmod удалил это разрешение, поэтому вы потеряли этот доступ. Если вы используете -R вариант chmod Лучше избегать использования числовой версии разрешений и вместо этого запускать (используя желаемое состояние в качестве примера) chmod -R ug=rwX,o=rX. Заглавная буква X означает, что бит X устанавливается только для каталогов или файлов, в которых есть хотя бы один x устанавливать. Также вы можете использовать 644 (u=rwX,go=rX), если вам действительно не нужна группа пользователей для записи.

Из Документация Wordpress:

Если у вас есть доступ к серверу через оболочку, вы можете рекурсивно изменять права доступа к файлам, используя следующие команды:

Для справочников:

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

Для файлов:

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