Я установил Apache с FastCGI (mod_fastcgi), suExec и PHP на моем локальном компьютере для разработки. Работает отлично, за исключением одного.
Допустим, у меня есть два пользователя:
user1 - /home/user1/public_html
user2 - /home/user2/public_html
Я обнаружил серьезную дыру в безопасности в своей конфигурации: я могу включить файл из веб-корня user2 в файл user1. Как предотвратить? Есть какие-нибудь советы?
php-cgi
процесс запущен под правильным пользователем.
решение1
Я бы посоветовал вам установить base_path
в вашем VirtualHost:
php_admin_value open_basedir /usr/local/www/sixeightzero
решение2
Если цель — запустить php под именем пользователей, чтобы разделить их, то попробуйтеapache2-mpm-itk, его гораздо проще развернуть, чем fast-cgi, и он отлично работает.
Для использования вам нужно всего лишь добавить эту строку в конфигурацию виртуального хоста:
AssignUserId someuser somegroup
При желании вы также можете установить MaxClientsVHost и NiceValue.
решение3
Единственный способ сделать это правильно — запретить одному пользователю читать файлы из домашнего каталога другого пользователя, но оставить их доступными для чтения веб-серверу.
Это можно сделать следующим образом (пример):
смонтировать файловую систему с параметрами 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