У меня есть серверная среда Ubuntu 16.04 Nginx с несколькими (WordPress) веб-приложениями под /var/www/html
.
Мой пользователь Nginx www-data
.
Каждый раз, когда я добавляю веб-приложение, я выполняю:
chown www-data:www-data /var/www/html/* -R
find /var/www/html/* -type d -exec chmod 755 {} \;
find /var/www/html/* -type f -exec chmod 644 {} \;
Кажется, что какое-то программное обеспечение (может быть, Nginx?) Меняет разрешения, поэтому по крайней мере некоторые каталоги (а может быть, и их файлы) становятся недоступный для записи.
У меня вопрос: почему и как любое программное обеспечение может изменять мои разрешения и как лучше всего с этим справиться?
Я мог бы добавить ежедневную задачу crontask, чтобы вернуть вышеупомянутые изменения, но некоторые могут не посчитать это «изящным» решением, и лучше всего изменить любое подозрительное программное обеспечение, чтобы оно не «осмеливалось» снова изменять эти разрешения.
Проблема была вызвана другой командой cron - командой WP-CLI для обновления ядра WordPress. Есть также аналогичные команды для обновления плагинов и тем, которые могли вызвать аналогичные проблемы.
Вот 3 команды (ядро, плагины, темы) + 3 команды, которые запускаются сразу после них, чтобы исправить отклонения разрешений, вызванные обновлениями:
for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp plugin update --all --allow-root; done
for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp core update --allow-root; done
for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp theme update --all --allow-root; done
chown www-data:www-data /var/www/html/* -R
find /var/www/html/* -type d -exec chmod 755 {} \;
find /var/www/html/* -type f -exec chmod 644 {} \;
У меня была аналогичная проблема с Moodle, однако в моем случае право собственности на файлы менялось на root:root
также. Измененные файлы и каталоги были файлами кеша и вызывали проблемы при обновлении версий. Я наконец понял, что на самом деле это была ошибка в Moodle, которая меняла разрешения, однако проблема владения была связана с моим httpd
процесс работает как root
вместо того, чтобы apache
пользователь. Инструкции могут можно найти здесь для httpd
и здесь для nginx
.
Я подозреваю, что ваша проблема очень похожа на мою. Было бы очень полезно, если бы вы могли предоставить несколько конкретных примеров файлов / каталогов в вашей установке WordPress, которые затронуты этой проблемой, и, возможно, список плагинов, которые вы в настоящее время используете. Моя проблема была вызвана ошибкой в плагине.