Я установил Apache с FastCGI (mod_fastcgi), suExec и PHP в свой локальный блок разработки. Работает отлично, кроме одного.
Допустим, у меня есть два пользователя:
user1 - /home/user1/public_html
user2 - /home/user2/public_html
Я обнаружил серьезную дыру в безопасности в своей конфигурации: я могу включить файл из корневого веб-каталога user2 в файл user1. Как предотвратить? Какие-нибудь советы?
php-cgi
процесс выполняется под правильным пользователем.
Единственный способ сделать это правильно - запретить одному пользователю читать файлы из домашнего каталога другого пользователя, но оставить их доступными для чтения веб-серверу.
Вы можете сделать это (пример):
смонтировать файловую систему с параметрами acl: mount -o acl /dev/sda /home
Разрешите веб-серверу доступ к нему:
setfacl -m u:nobody:r-x /home/user1
setfacl -m u:nobody:r-x /home/user2
Разрешите владельцу прочитать это:
setfacl -m u:user1:r-x /home/user1
setfacl -m u:user2:r-x /home/user2
Если цель состоит в том, чтобы запустить php от имени пользователей, чтобы разделить их, попробуйте apache2-mpm-itk, его гораздо проще развернуть, чем fast-cgi, и он отлично работает.
Для использования вам нужно только добавить эту строку в конфигурацию виртуального хоста:
AssignUserId someuser somegroup
Вы также можете установить MaxClientsVHost и NiceValue, если хотите.
Я предлагаю вам установить base_path
внутри вашего VirtualHost:
php_admin_value open_basedir /usr/local/www/sixeightzero