当尝试以 userXYZ 身份执行脚本时,suEXEC 会查询 www-data

当尝试以 userXYZ 身份执行脚本时,suEXEC 会查询 www-data

我正在使用 Apache2 和 PHP 7.0 与 FastCGI 设置 suexec 环境。

我已经按正常方式安装了一切

Aptitude install libapache2-mod-fcgid apache2-suexec-custom
A2enmod suexec

我的服务器具有以下结构:

  • 有些用户的网站位于 /home/用户名/public_html/(Linux 用户“用户名“)
  • 并且有一个主网站,其文档根位于 /data/www/(用户“主页”)。

SuEXEC 到目前为止可以正常工作,但有一个主要问题:出于某种原因,suEXEC 查询 /etc/apache2/suexec/www-data 而不是 /etc/apache2/suexec/username ,因此我只能让位于 /data 的网站工作,或者让位于 /home 的网站工作,但不能同时工作。我不明白这一点,因为我的服务器上没有脚本属于 www-data。

/etc/apache2/suexec/www-data(未更改,因为我不使用 www-data)

/var/www
public_html/cgi-bin

/etc/apache2/suexec/主页

/data
www/cgi-bin

/etc/apache2/suexec/用户XYZ

/home/userXYZ
public_html/cgi-bin

/数据/www/cgi-bin/php-fcgi

#!/bin/sh
export PHPRC="/etc/php/7.0/cgi"
exec /usr/bin/php-cgi

/主页/用户XYZ/public_html/cgi-bin/php-fcgi

#!/bin/sh
export PHPRC="/etc/php/7.0/cgi"
exec /usr/bin/php-cgi

在 /etc/apache2/sites-enabled 下,您可以:

<Directory /data/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    FCGIWrapper /data/www/cgi-bin/php-fcgi .php
    <FilesMatch \.php$>
        SetHandler fcgid-script
    </FilesMatch>
    Options +ExecCGI
</Directory>

<Directory /home/userXYZ/public_html/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    FCGIWrapper /home/userXYZ/public_html/cgi-bin/php-fcgi .php
    <FilesMatch \.php$>
        SetHandler fcgid-script
    </FilesMatch>
    Options +ExecCGI
</Directory>

<VirtualHost *:80>
        DocumentRoot "/home/userXYZ/public_html"
        SuexecUserGroup userXYZ userXYZ
        ServerName ...
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot "/data/www"
        SuexecUserGroup homepage homepage
        ServerName ...
</VirtualHost>

因此,当我访问我的主主页 (/data/www) 时,它不起作用,因为 suexec/www-data.conf 的文档根目录位于 /var/www 。如果我将 suexec/www-data.conf 更改为 /data ,则主主页可以正常工作。但是,用户网站无法正常工作,因为它们位于 /home 。如果我将 www-data 更改为 /home ,则我的主主页无法正常工作,因为它的文档根目录位于 /data ... 我如何避免 suEXEC 查询 www-data 配置,而是查询正确的用户配置?

答案1

根据 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=785740

这个想法是能够让不同的 apache2 进程运行,因为不同的用户能够使用不同的 suexec 配置。

因此,如果 apache2 在 www-data 下运行,则只会考虑文件 /etc/apache2/suexec/www-data。

相关内容