使用Apache2 mpm-itk在Debian Etch下运行独立UID / GID下的Vhost
版本1.0
作者:Falko Timme
本文介绍如何在Debian Etch服务器上安装和配置apache2-mpm-itk 。 apache2-mpm-itk是Apache 2 Web服务器的MPM(多处理模块)。 mpm-itk允许您在单独的UID和GID下运行每个vhost - 简而言之,一个vhost的脚本和配置文件不再需要对所有其他vhosts可读。 mpm-itk与mod_php一起使用,因为mpm-itk是基于传统的prefork MPM,这意味着它是非线程的。 这意味着您不必再使用suExec或suPHP作为单独的用户运行网站的PHP脚本。
本文档不附带任何形式的保证! 我不会保证这将为您工作!
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
,它需要两个参数,即用户名以及虚拟机将运行的组。
在这个例子中,我将使用默认的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配置,并添加以下行:
[...] <IfModule mpm_itk_module> AssignUserId web1_admin web1 </IfModule> [...] |
例如:
vi /etc/apache2/sites-available/default
NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /apache2-default/ </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" <Directory "/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 </Directory> <IfModule mpm_itk_module> AssignUserId web1_admin web1 </IfModule> </VirtualHost> |
之后重新启动Apache:
/etc/init.d/apache2 restart
而已!
4链接
- apache2-mpm-itk: http : //mpm-itk.sesse.net
- Apache: http : //httpd.apache.org
- Debian: http : //www.debian.org