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

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

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