Как настроить CGI в Ubuntu?

Я очень плохо знаком с Apache в Ubuntu. Я недавно установил Apache2 на Ubuntu, и я пытаюсь настроить CGI. Я добавил следующие строки в apache2.conf файле:

ScriptAlias  /cgi-bin/ /home/router/cgi-bin/

<Directory /home/router/cgi-bin/>
        Options ExecCGI
        AddHandler cgi-script cgi pl
</Directory>

И я сохранил и перезапуск apache2, но когда я ввожу следующее в браузере:

http://192.168.1.1/cgi-bin/file1.cgi 

Я получаю следующую ошибку:

You don't have permission to access /cgi-bin/file1.cgi on this server.
1
задан 11 July 2016 в 06:33

2 ответа

Во-первых, я не выполнил бы CGI от Вашего /home/ каталог. Полномочия не настраиваются для этого, для веб-серверов, и могут время от времени приводить к некоторым головным болям, и с конфигурациями полномочий и с другими проблемами.

Во-вторых, я предложил бы *создание специализированного каталога в /var/www/ (такой как cgi-bin) куда Ваши сценарии CGI помещаются, и используйте это в конфигурации Apache.

sudo mkdir -p /var/www/cgi-bin/
sudo chown $USER:www-data /var/www/cgi-bin/

Вышеупомянутые команды создадут каталог и настроят полномочия так, чтобы можно было записать в каталог, и веб-сервер может прочитать каталог и иметь доступ, чтобы сделать вещи в каталоге.

Оттуда, отбросьте свой CGI там, удостоверьтесь, что он принадлежит похожим способом (sudo chown $USER:www-data /var/www/cgi-bin/*) и затем набор Ваша конфигурация Apache для использования /var/www/cgi-bin вместо /home/router/cgi-bin.


Если по некоторым причинам необходимо использовать /home/router/cgi-bin, затем необходимо сделать несколько вещей: www-данные разрешения и все пользователи для пересечения до cgi-bin каталог, и дает www-доступ-к-данным самому каталогу.

sudo chgrp www-data /home/router/cgi-bin
sudo chmod +rx /home/
sudo chmod +rx /home/router/
sudo chmod 750 /home/router/cgi-bin/

Проблема с этим - Вы, должны открыть Ваш корневой каталог как раз так, чтобы 'другая' категория пользователей могла достигнуть структуры каталогов и пересечь ее. Это - дыра в системе безопасности, потому что любому другому пользователю нельзя разрешить пересечь файловую систему в Ваш корневой каталог таким образом, поскольку это могло привести к утечке данных или краже персональных данных. (Поэтому большинство руководств для веб-серверов предлагает не использовать корневые каталоги и вместо этого выделенные каталоги в /srv/ или /var/www/ для каталогов документа веб-сервера)

2
ответ дан 7 December 2019 в 13:43

Я только что настроил новый сервер ЛАМПЫ с помощью Ubuntu 18.04.01, которая устанавливает или обновления (я не уверен который) к Apache2 v 2.4.29. Это немного плохо мне знакомо, поскольку конфигурационные файлы Apache изменились снова, но я думаю, что процедура ниже является правильной.

cgi загрузочный модуль не был включен так, я должен был сделать это сначала путем выполнения a2enmod. (Проверьте доступные модули на корректное имя.) Это настраивает символьную ссылку от включенной папки до файла в доступной папке.

cgi модуль конфигурации был уже включен - я думал это немного нечетное, но это - каково это было. Модуль конфигурации имеет условный оператор, который проверяет, доступен ли загрузочный модуль и раз так устанавливает Scriptalia на/usr/bin/cgi-bin. Я считал, что это не хорошая идея, как в предыдущем ответе, и лучше сделать/var/www/cgi-bin каталог для Ваших сценариев, таким образом, я сделал это.

Затем, я поместил свой сценарий PHP в новый каталог, в котором я создал/var/www/cgi-bin. Это только должно было быть только для чтения - я chmod'ed это к 444, и это работало.

За эти годы apache2.conf файл имеет меньший и, как объяснено в документах, разработчики попытались сделать его более легко настраивающимся, заставив его звонить в другие биты.

0
ответ дан 7 December 2019 в 13:43

Другие вопросы по тегам:

Похожие вопросы: