У меня 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-content
и каждый подкаталог - 2730, а все файлы - 2640, так что пользователь получает полный контроль, www-data
группа может входить в папки, а другие ничего не могут делать.wp-content/themes
- plugins
- upgrade
и uploads
также 2730..htacces
- 0660, а когда я закончу, будет 0640.Как уже было сказано, все работает нормально, и я могу обновлять, устанавливать / удалять плагины и темы и т. Д.
НО у меня проблемы с wp-config.php
. Я могу установить его на 644 или даже на 404, но когда я устанавливаю его на 640 или 400, что я бы хотел, я получаю белый экран смерти.
Я проверил, что файл принадлежит user:www-data
.
Кто-нибудь знает, зачем ему бит чтения для других?
Заранее спасибо.
Хорошо, вот решение, может быть полезно кому-то еще:
Проблема была в процессе настройки chown и chmod. Вы обнаружите, что шаги повторяются. Я не уверен, почему это должно быть именно в таком порядке, потому что результаты кажутся такими же, как в моем первоначальном порядке (я дважды проверил на двух разных компьютерах), но правильная процедура, шаг за шагом, кажется быть следующим:
Вы готовите каталоги для сайта, моя схема такая:
/home/user1/domains/site1/public
/home/user1/domains/site2/public
и т.д...
/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
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 {} \;
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
curl -s https://api.wordpress.org/secret-key/1.1/salt/
sudo nano wp-config.php
http://www.site1
и выполните установку WordPress.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
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
sudo chmod 400 wp-config.php
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.