Я недавно обновил свой сервер Apache2, и теперь я не могу запустить приложение CGI. Мои журналы показывают
(13) Permission denied, невозможно подключиться к cgi deamon после нескольких попыток
Я понимаю, что сообщение об ошибке означает, что Apache отказано в разрешении на доступ к какому-либо файлу, и я не понимаю, как отследить и решить проблему.
Действительно ли файл, упомянутый в сообщении об ошибке, является заблокированным? Или проблема может быть в другом необходимом файле? Файл .cgi находится там, где он всегда был, в / usr / share. Владение файлом (root) и разрешения (доступный для чтения / исполняемый файл) такие же, как и всегда для файла и его предков. Метки файлов SELinux не изменились.
Журнал аудита SELinux не показывает отказов, связанных с Apache или программой CGI. В случае состояния донотаудита я включил аудит, но все равно ничего не увидел. Я ненадолго переключил SELinux в разрешающий режим, но безрезультатно. Я даже попытался перезапустить Apache в разрешающем режиме. Это не решило проблему.
Есть предложения, как решить эту проблему? У меня есть соблазн просто вернуться к старому Apache.
может сработать, а может и не сработать, это маловероятно, но у кого-то была похожая проблема, и это было решением;
chmod 755 /var/log/httpd/
или любой другой каталог для журналов apache на вашем сервере.
http://www.mail-archive.com/apache-fp@lists.joshie.com/msg00585.html
подтвердите, что у вас есть следующие настройки в 00-mpm.conf
/etc/httpd/conf.modules.d/00-mpm.conf
и закомментировать mod_mpm_prefork.so затем прокомментируйте mod_mpm_worker.so модуль
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
Хотя это более старый вопрос, я подумал, что добавлю свой ответ, поскольку мне не удалось найти правильное объяснение или решение в Интернете.
У меня эта проблема возникала в RHEL 7 с Apache 2.4 (установленным как пакет httpd24) только при использовании события MPM (предварительный MPM работал нормально). SELinux уже был настроен на разрешение.
Основываясь на комментарии о сокетах CGI, я проверил документацию:
По сути, демон CGI при использовании mpm-события требует файл сокета. Поскольку Apache работает под пользовательским apache и групповым apache на моем сервере (и, без сомнения, многими другими), папка, содержащая этот файл сокета, должна иметь доступ для чтения и записи через apache.apache.
Не желая переопределять разрешения папки журнала, я решил явно установить ScriptSock
директива в conf.modules.d/00-mpm.conf
:
ScriptSock /var/run/httpd/cgid.sock
Затем я убедился, что httpd
каталог существовал (примечание: вам нужно настроить это через tmpfiles.d
, так как /var/run
это tmpfs) и сменил владельца на apache.apache. Разрешения были оставлены по умолчанию 755.
Это решило проблему для меня.
У меня было изменение поведения модуля при обновлении apache. Возможно, что вашим директивам apache conf могут потребоваться некоторые изменения для правильного обслуживания вашего cgi. Не зная apache conf и подробностей cgi и его местоположения в файловой системе, действительно сложно сделать больше, чем просто предположить.
Также, если вы подозреваете SELinux, попробуйте отключить его, чтобы увидеть, начнет ли apache снова обслуживать CGI. Если это так, вы можете сосредоточить свои усилия либо на корректировке политики, чтобы разрешить то, что вы пытаетесь делать, либо на приведении вашей системы в соответствие с политикой SELinux.
У AIX 7 была такая же проблема. установить разрешения для каталога / var / log / httpd, чтобы исправить.
Ошибка не относится к конкретному файлу или каталогу. Это шаблон ошибки, который не содержит никаких подсказок относительно того, какое разрешение является основной причиной.
... [cgid: error] ... (13) В доступе отказано: ... AH01257: невозможно подключиться к демону cgi после нескольких попыток: ... referer: ...
Если вышеуказанный шаблон появляется в записях журнала httpd, но журналы аудита selinux чистые, то проблема заключается в НЕКОТОРЫХ правах доступа, связанных с демоном CGI, а не в файлах, перечисленных в сообщении об ошибке. Демон CGI должен иметь возможность находить и записывать несколько вещей.
Mpm_event_module теперь часто указывается во время компиляции httpd в большинстве пакетов, из-за чего httpd по умолчанию принимает значение mod_cgid вместо mod_cgi.
Любое из предложений в других ответах может работать, а может и нет. Например, возник еще один случай, когда мы создали группу «сайты», чтобы определенные пользователи могли получать доступ к содержимому сайта, не теряя других разрешений. Каталог / var / run имел группу apache, которая создавала отказ в разрешениях при попытке создать сокет.
Много чего перепробовал:
для меня это работает, когда я устанавливаю DefaultRuntimeDir в apache conf