Назад | Перейти на главную страницу

Скрипты Perl нельзя запускать с псевдонима

Я создал следующий псевдоним в 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 /".

Я убедился, что у скрипта есть разрешение 755.

Ниже приводится содержимое сценария perl:

#!/usr/bin/perl
use CGI qw/:standard/;
print "Content-type:text/html;\n\n";
print "Hello world";
1;

В чем проблема?

После проверки права собственности на / some / location / на / в / server / папке я обнаружил, что владельцем является «корневое» имя пользователя, в то время как я пытался получить доступ к папке через учетную запись (имя домена) на Apache, которая имеет другое имя пользователя, например domain.com/aliasedfolder/script.pl

Механизм suexec предотвращает это из соображений безопасности. Итак, я изменил владельца папки / some / location / on / the / server / и файла script.pl внутри нее с «root» на имя пользователя и группу моей учетной записи, и теперь он работает.

Это предотвратит доступ других доменов, указывающих на мой сервер, к этому файлу (script.pl), поскольку suexec предотвращает совместное использование одного файла несколькими доменами (с разными именами пользователей).

Я могу полностью отключить механизм suexec, но мне посоветовали не делать этого из соображений безопасности.

Спасибо всем, кто пытался помочь.

Вы пробовали использовать

<Directory "/some/location/on/the/server/folder" >
    AddHandler cgi-script .pl
    ....
    AllowOverride None
</Directory>

Также вы принимаете какие-либо меры безопасности, такие как suExec или SELinux, если у вас есть дополнительные права собственности и настройки расширенных атрибутов, необходимые для ваших скриптов.