与Suexec在Apache httpd 2.4上正常工作

我试图在一台计算机上运行3个独立的域,每个域都与它的用户(通过虚拟主机)一起运行,所以我决定将suExec用于我的任务(该域也与apache一起安装):

在“ apache”用户和组上运行的全局服务器配置。

其中一位用户(我尝试与之访问的用户)的没收:

listen 9999
<VirtualHost *:9999>
        ServerName *:9999
        DocumentRoot "/home/efpanel/public_html"
        ErrorLog "/home/efpanel/err.log"
        <IfModule suexec_module>
#               SuexecUserGroup efpanel efpanel
        </IfModule>
        # Directory settings...
        ...

        <IfModule alias_module>
                ScriptAlias /cgi-bin/ "/home/efpanel/public_html/cgi-bin/"
        </IfModule>
</VirtualHost>

问题:
当对SuexecUserGroup的行进行注释时,正在运行的perl脚本将位于用户“ apache”上-不是我想要的,而是至少可以运行。
但是:如果我取消注释此行,即使是简单的perl脚本也将失败,并显示错误500(内部服务器错误)。检查日志文件,我得到的错误是:

[Sat Dec 21 01:34:56.274872 2019] [cgi:error] [pid 31211] [client 183.28.7.14:7262] End of script output before headers: test.cgi,referer: http://99.99.99.99:9999/

注释:
1)mod_suexec已安装并启用(以下是“ ls -l / usr / sbin | grep suexec”的结果):

-r-x--x--- 1 root apache  15440 Aug  8 07:42 suexec


2)我正在CentOS 7上用PERL编写的CGI运行Apache 2.4 httpd。
3)我知道suEXEC仅适用于脚本文件,但是对我来说足够了-如果我使它能够正常工作。
4)检查配置值,我无法确定suexec日志文件在哪里,并且无法通过“ find / suexec.log”命令找到它。配置值如下(似乎是标准的):

[root@vps cgi-bin]# suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_SYSLOG
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX="public_html"

我在这里唯一关心的是“ DOC_ROOT”,它是“ / var / www”,与“ / home / efpanel”有共同点-但是:a)我不知道如何在编译后重新配置suexec,b )我认为没有必要,也许“按原样”还可以吗?
5)cgi脚本,cgi-bin目录,public_html目录和/ home / efpanel目录都属于同一用户和组(efpanel),并且具有0755的访问许可,但具有0711访问许可的“ / home / efpanel”除外。
6)我尝试在脚本的第一行中添加“ -w”,如建议的here

#!/usr/bin/perl -w

my $u=(getpwuid $>)[0];
print "ContentType: text/html;\n\n$u";

exit 0;

如所见,这是一个非常简单的脚本,并且失败。

cctt1233 回答:与Suexec在Apache httpd 2.4上正常工作

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2881748.html

大家都在问