Apache設定 · 1 min read · Jan 29, 2026

Apache2 mpm-itkを使用してDebian Etchで別々のUID/GIDでVhostsを実行する

Apache2 mpm-itkを使用してDebian Etchで別々のUID/GIDでVhostsを実行する

Version 1.0
Author: Falko Timme

この文書では、Debian Etchサーバーにapache2-mpm-itkをインストールおよび構成する方法を説明します。apache2-mpm-itkは、Apache 2ウェブサーバー用のMPM(マルチプロセッシングモジュール)です。mpm-itkを使用すると、各vhostを別々のUIDおよびGIDで実行できるため、1つのvhostのスクリプトや構成ファイルが他のすべてのvhostに対して読み取り可能である必要がなくなります。mpm-itkは、従来のprefork MPMに基づいているため、mod_phpと連携して動作します。これは、スレッドを使用しないことを意味します。これにより、ウェブサイトのPHPスクリプトを別のユーザーとして実行するためにsuExecやsuPHPを使用する必要がなくなります。

この文書には、いかなる種類の保証もありません!これがあなたにとって機能するという保証はありません!

1 予備的な注意

Debian Etchサーバーにmod_phpを使用した動作するApache2インストールがあると仮定しています。

速度に関する考慮事項については、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 Etch用のDebianパッケージとして利用可能ですので、実行する必要があるのは次のコマンドです。

apt-get install apache2-mpm-itk

3 apache2-mpm-itkの構成

apache2-mpm-itkはvhostごとに構成されます。つまり、グローバルオプションを設定する必要はなく、vhostで設定する必要があるのはAssignUserIdという1つのディレクティブだけです。これは、vhostが実行されるユーザー名とグループを指定する2つのパラメータを取ります。

この例では、デフォルトのDebian Apache vhost(その構成は/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-default/にapache2のデフォルトの開始ページを持つことができますが、/は正しい場所にリダイレクトされます 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

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。