Apache Configuration · 2 min read · Jan 29, 2026

Executando Vhosts Sob UIDs/GIDs Separados Com Apache2 mpm-itk No Debian Etch

Executando Vhosts Sob UIDs/GIDs Separados Com Apache2 mpm-itk No Debian Etch

Versão 1.0
Autor: Falko Timme

Este artigo explica como você pode instalar e configurar apache2-mpm-itk em um servidor Debian Etch. apache2-mpm-itk é um MPM (Módulo de Processamento Múltiplo) para o servidor web Apache 2. mpm-itk permite que você execute cada um dos seus vhosts sob um UID e GID separados - em resumo, os scripts e arquivos de configuração de um vhost não precisam mais ser legíveis para todos os outros vhosts. mpm-itk funciona com mod_php porque mpm-itk é baseado no MPM tradicional prefork, o que significa que não é multithread. Isso significa que você não precisa mais usar suExec ou suPHP para executar os scripts PHP de um site como um usuário separado.

Este documento vem sem garantia de qualquer tipo! Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Estou assumindo que você tem uma instalação do Apache2 funcionando com mod_php em seu servidor Debian Etch.

Para considerações de velocidade, dê uma olhada em http://blog.stuartherbert.com/php/2008/04/19/using-mpm-itk-to-secure-a-shared-server/.

Para considerações de segurança, visite http://mpm-itk.sesse.net/.

2 Instalando apache2-mpm-itk

apache2-mpm-itk está disponível como um pacote Debian para Debian Etch, então tudo o que precisamos fazer é executar

apt-get install apache2-mpm-itk

3 Configurando apache2-mpm-itk

apache2-mpm-itk é configurado com base em cada vhost, ou seja, não precisamos definir nenhuma opção global, e há apenas uma diretiva que precisamos definir em um vhost, AssignUserId, que aceita dois parâmetros, o nome do usuário e o grupo que o vhost irá executar.

Neste exemplo, usarei o vhost padrão do Debian Apache (você pode encontrar sua configuração em /etc/apache2/sites-available/default) com o diretório raiz /var/www (se você tiver vhosts diferentes, ajuste isso para sua situação), e quero que este vhost seja executado como o usuário web1_admin e grupo web1.

Se o usuário e o grupo ainda não existirem, podemos criá-los da seguinte forma:

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

Então abrimos nossa configuração de vhost e adicionamos as seguintes linhas:

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

Por exemplo:

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 # Esta diretiva nos permite ter a página inicial padrão do apache2 # em /apache2-default/, mas ainda ter / indo para o lugar certo 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 # Os valores possíveis incluem: 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 |

Reinicie o Apache em seguida:

/etc/init.d/apache2 restart    

É isso!

4 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.