Apache настройка · 2 min read · Jan 29, 2026

Запуск Vhosts под отдельными UID/GID с Apache2 mpm-itk на Debian Etch

Запуск Vhosts под отдельными UID/GID с Apache2 mpm-itk на Debian Etch

Версия 1.0
Автор: Фалко Тимме

Эта статья объясняет, как вы можете установить и настроить apache2-mpm-itk на сервере Debian Etch. apache2-mpm-itk — это MPM (модуль многопроцессорной обработки) для веб-сервера Apache 2. mpm-itk позволяет запускать каждый из ваших vhost под отдельным UID и GID — короче говоря, скрипты и конфигурационные файлы для одного vhost больше не должны быть доступны для чтения для всех остальных vhosts. mpm-itk работает с mod_php, потому что mpm-itk основан на традиционном MPM prefork, что означает, что он не является многопоточным. Это означает, что вам больше не нужно использовать suExec или suPHP для запуска PHP-скриптов веб-сайта от имени отдельного пользователя.

Этот документ предоставляется без каких-либо гарантий! Я не даю никаких гарантий, что это будет работать для вас!

1 Предварительная заметка

Я предполагаю, что у вас есть рабочая установка Apache2 с mod_php на вашем сервере Debian Etch.

Для соображений скорости, посмотрите на http://blog.stuartherbert.com/php/2008/04/19/using-mpm-itk-to-secure-a-shared-server/.

Для соображений безопасности, пожалуйста, посетите http://mpm-itk.sesse.net/.

2 Установка apache2-mpm-itk

apache2-mpm-itk доступен как пакет Debian для Debian Etch, поэтому все, что нам нужно сделать, это выполнить

apt-get install apache2-mpm-itk

3 Настройка apache2-mpm-itk

apache2-mpm-itk настраивается на основе каждого vhost, т.е. нам не нужно устанавливать какие-либо глобальные параметры, и есть только одна директива, которую нам нужно установить в vhost, AssignUserId, которая принимает два параметра: имя пользователя и группу, от имени которой будет работать vhost.

В этом примере я буду использовать vhost по умолчанию Debian Apache (вы можете найти его конфигурацию в /etc/apache2/sites-available/default) с корнем документа /var/www (если у вас есть разные vhosts, пожалуйста, подкорректируйте это под вашу ситуацию), и я хочу, чтобы этот vhost работал от имени пользователя web1_admin и группы web1.

Если пользователь и группа еще не существуют, мы можем создать их следующим образом:

groupadd web1
useradd -s /bin/false -d /home/web1_admin -m -g web1 web1_admin

Затем мы открываем конфигурацию нашего vhost и добавляем в нее следующие строки:

| [...] AssignUserId web1_admin web1 [...] |

Например:

vi /etc/apache2/sites-available/default

| NameVirtualHost * ServerAdmin webmaster@localhost DocumentRoot /var/www/ Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # Эта директива позволяет нам иметь страницу по умолчанию apache2 # в /apache2-default/, но при этом / перенаправляет на правильное место RedirectMatch ^/$ /apache2-default/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/log/apache2/error.log # Возможные значения включают: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 AssignUserId web1_admin web1 |

Перезапустите Apache после этого:

/etc/init.d/apache2 restart    

Вот и все!

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.