Содержание
apache2 - Запуск виртуальных хостов от разных учетных записей
Ситуация: У вас сервер. Вы предоставляете хостинг для своих друзей. У них отдельные SSH/FTP аккаунты. Необходимо разграничить доступ на уровне apache. По сути, нужно, что бы Apache запускался для каждого пользователя под своим логином.
Есть решения основанные на CGI, но я предпочитаю использовать модуль apache2-mpm-itk.
<note important>Установка apache2-mpm-itk может удалить apache2 и apache2-mpm-prefork</note>
Устанавливаем:
$ sudo apt-get install apache2-mpm-itk
Далее, прописываем к каждому виртуальному хосту следующее:
<IfModule mpm_itk_module> AssignUserId USER GROUP </IfModule>
Если для виртуального хоста не будет указана эта директива, то сайт будет работает от стандартного пользователя, который установлен к файле настроек apache2 (Обычно www-data или apache2 или httpd).
Далее, необходимо установить права владения файлов у виртуальных хостов:
$sudo chown MYUSER:MYGROUP /var/www/my-virtualhost/ -R
Активировать этот модуль через a2enmod НЕ нужно.
Перезапускаем Apache2:
$ sudo /etc/init.d/apache2 reload
Пример создания директории под сайт и пользователя
Создаем новую группу:
groupadd friend
Создаем пользователя vasya в группе friend:
useradd -s /bin/false -d /home/vasya -m -g friend vasya
Для него автоматически создастся домашняя директория /home/vasya
И для его виртуального хоста добавляем строчки: <IfModule mpm_itk_module> AssignUserId vasya friend </IfModule>