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

chmod 640 в wp-config.php с пользователем: www-data получает белый экран на WordPress

У меня Ubuntu 16.04.1 с Apache 2.4.23, PHP 7.1 RC3, FastCGI, PHP-FPM с отдельными пулами для каждого сайта, MariaDB, PhpMyAdmin, Webmin и Nginx в качестве обратного прокси, потому что мне нужно установить Varnish и все мои сайты SSL. Я также установил WordPress. Все последняя версия и работает нормально.

Что касается безопасности, каждый сайт работает с отдельным пользователем-владельцем через пулы PHP-FPM, и все принадлежит как user1:www-data, user2:www-dataи т. д. Каждый сайт находится в /home/user/domains/site/public.

Как я уже сказал, вроде все в порядке, и последнее, над чем я работаю, - это хорошая безопасность в WordPress:

У всего установлен бит setgid.

Как уже было сказано, все работает нормально, и я могу обновлять, устанавливать / удалять плагины и темы и т. Д.

НО у меня проблемы с wp-config.php. Я могу установить его на 644 или даже на 404, но когда я устанавливаю его на 640 или 400, что я бы хотел, я получаю белый экран смерти.

Я проверил, что файл принадлежит user:www-data.

Кто-нибудь знает, зачем ему бит чтения для других?

Заранее спасибо.

Хорошо, вот решение, может быть полезно кому-то еще:

Проблема была в процессе настройки chown и chmod. Вы обнаружите, что шаги повторяются. Я не уверен, почему это должно быть именно в таком порядке, потому что результаты кажутся такими же, как в моем первоначальном порядке (я дважды проверил на двух разных компьютерах), но правильная процедура, шаг за шагом, кажется быть следующим:

Вы готовите каталоги для сайта, моя схема такая:
/home/user1/domains/site1/public
/home/user1/domains/site2/public и т.д...

  • Скопируйте файлы WordPress в /public каталог:
    sudo rsync -avP ~/wordpress/ /home/user1/domains/site1/public/
  • Дайте Пользователь и Группа владение:
    sudo chown -R user1:www-data /home/user1/domains/site1/public
  • Сделайте нужные папки и тоже порубите их, как раньше:
    sudo mkdir wp-content/uploads sudo mkdir wp-content/upgrade sudo chown -R user1:www-data wp-content/uploads sudo chown -R user1:www-data wp-content/upgrade
  • Активируйте Setgid bit для нашего DocumentRoot, поэтому каждая новая папка / файл наследует группу:
    sudo find /home/user1/domains/site1/public -type d -exec chmod g+s {} \; sudo find /home/user1/domains/site1/public -type f -exec chmod g+s {} \;
  • Дайте Группа доступ на запись для веб-сервера, чтобы иметь возможность настраивать темы и плагины во время процесса установки WordPress:
    sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/themes<br/> sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/plugins
  • Получите секретные ключи для wp-config.php, а затем отредактируйте файл, чтобы упорядочить настройки базы данных и все, что вы хотите настроить:
    curl -s https://api.wordpress.org/secret-key/1.1/salt/
    sudo nano wp-config.php
  • Теперь пора браузеру перейти на http://www.site1 и выполните установку WordPress.
  • После установки WP давайте усилим безопасность:
    sudo find /home/user1/domains/site1/public -type d -print0 | xargs -0 sudo chmod 710 sudo find /home/user1/domains/site1/public -type f -print0 | xargs -0 sudo chmod 640
  • Поскольку нам все еще нужны некоторые папки, чтобы WordPress (это были бы www-данные) мог писать в них, нам нужно повторить некоторые шаги:
    sudo chmod g+w /home/skirev/domains/skireviewer/public/wp-content sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/themes sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/plugins sudo chmod -R g+w /home/user1/domains/site1/public/wp-content/uploads sudo chmod -R g+w /home/user/domains/site1/public/wp-content/upgrade
    Это оставит wp-content и его подпапки равными 730.
  • СЕЙЧАС мы можем безопасный wp-config.php:
    sudo chmod 400 wp-config.php
  • И, наконец, наши каталоги по-прежнему имеют размер 2710 (кроме wp-content и подпапок, которые имеют размер 2730), но наши файлы потеряли Setgid немного. Итак, нам нужно снова запустить:
    sudo find /home/user1/domains/site1/public -type f -exec chmod g+s {} \;

Вы говорите, что файл принадлежит www-data а это 640? Он должен принадлежать пользователю, работающему с PHP, а не веб-серверу, потому что PHP пытается его прочитать. В вашем файле журнала ошибок, вероятно, будет отображаться сообщение «Доступ запрещен» из PHP.

Кстати, я не совсем уверен, что правильно понял вашу модель разрешений, но вы сказали, что можете устанавливать плагины и темы? Это означает, что он доступен для записи пользователю, запустившему его. Я бы не стал этого делать. я хотел бы использовать wp-cli для управления им и сделать его недоступным для записи пользователю, работающему с PHP или веб-сервером.

Сначала я бы попытался проверить, все ли соответствующие процессы PHP-FPM работают под правильным UID.