У меня есть серверная среда 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, которые затронуты этой проблемой, и, возможно, список плагинов, которые вы используете в настоящее время. Моя проблема была вызвана ошибкой в плагине.