Какие должны быть права на CGI-скрипты

Материал из wiki.p3.ru

Права на файл скрипта и на директорию cgi-bin должны быть 0755 (rwx r-x r-x)

Владельцем должен быть владелец www-домена

Директория cgi-bin находится в папке www-домена (www/ваш.домен/cgi-bin).

Наиболее частая ошибка начинающих состоит в том, что, что они ставят права 777, тем самым разрешается запись в директорию кому угодно, система безопасности suexec не позволит запустить такой скрипт и web-сервер будет выдавать ошибку 500. Равно как неправильный владелец файла приведет к невозможности запуска скрипта.

Пример простейшего cgi-скрипта:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!";

Также частая проблема бывает в том, что файл в формате окончаний строк dos, а не unix, пример не работы такого скрипта выявляется при запуске из консоли:

# ./hello.cgi 
./hello.cgi: Команда не найдена.

Однако если выполнить

# perl hello.cgi   
Content-type: text/html
Hello world!

То видно, что скрипт прекрасно выполняется. В редакторе mc (mcedit) или vi сказать можно увидеть, что первая строка выглядит как

#!/usr/bin/perl^M

Дело в том, что формат окончаний строк текстовых файлов в unix и в dos (windows) различны, следует сохранить этот файл в формате unix, например открыв в vim и подав команду

:set fileformat=unix
:wq

Если у вас много файлов, то можно воспользоваться командой на perl, чтобы перекодировать все файлы с расширением .cgi в текущей директории в формат unix-end-of-line, выполните

# perl -pi -e 's/\r\n/\n/;' *.cgi