我在 httpd.conf 中创建了以下别名:
alias /aliasedfolder /some/location/on/the/server/folder
<Location /aliasedfolder>
AddHandler cgi-script .pl
Options +FollowSymLinks +ExecCGI
Order allow,deny
Allow from all
AllowOverride None
</Location>
问题是我可以在“aliasedfolder”中查看图像,但是当我在那里运行 perl 脚本(例如 /aliasedfolder/script.pl)时出现“文件不存在”错误。
物理 perl 脚本存在于“/some/location/on/the/server/folder”中。
我确保该脚本具有 755 权限。
以下是 perl 脚本的内容:
#!/usr/bin/perl
use CGI qw/:standard/;
print "Content-type:text/html;\n\n";
print "Hello world";
1;
看起来是什么问题?
答案1
检查了 /some/location/on/the/server/folder 的所有权后,我发现所有者是“root”用户名,而我试图通过 Apache 上具有不同用户名的帐户(域名)访问该文件夹,例如 domain.com/aliasedfolder/script.pl
suexec 机制作为一项安全功能阻止了此操作。因此,我将 /some/location/on/the/server/folder 及其内部 script.pl 文件的所有权从“root”更改为我的帐户的用户名和组,现在一切正常。
这将阻止指向我的服务器的其他域访问此文件(script.pl),因为 suexec 阻止多个域(具有不同的用户名)共享单个文件。
我可以完全禁用 suexec 机制,但出于安全考虑,有人建议我不要这样做。
感谢所有提供帮助的人。