运行Vhosts在单独的UID / GID下与Apache2 mpm-itk在Debian蚀刻

使用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链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏