Решения проблем

/
/
Веб-сервер возвращает "Internal Server Error", при наличии ошибки "failed to setgid"

Веб-сервер возвращает "Internal Server Error", при наличии ошибки "failed to setgid"

Симптомы

Веб-сервер возвращает ошибку "Internal Server Error", при этом в журнале веб-сервера видно, что PHP-скрипт завершается до отправки каких-либо заголовков.

В журнале "suexec" наблюдаются ошибки "failed to setgid".

Причины

Проблема связана с утилитой "suexec" и отсутствием у неё возможности использовать SUID (Set User ID) бит. Suexec (от "Set User ID Execute") - это механизм веб-сервера, который позволяет выполнять CGI скрипты от имени конкретного пользователя, а не от имени общего системного пользователя, такого как "www-data" или "apache".

Необходимо помнить, что неправильное использование этих битов может повлечь за собой серьезные уязвимости в безопасности системы. Всегда следует строго контролировать и ограничивать доступ обладателей привилегий "setuid/setgid" к соответствующим файлам и регулярно проверять уровень безопасности системы.

Решение

Установка для исполняемого файла "/usr/sbin/suexec" атрибутов "cap_setuid" и "cap_setgid" с помощью "setcap".

Выполните команду:

setcap 'cap_setuid,cap_setgid+pe' /usr/sbin/suexec

 

После её выполнения перезапустите Apache:

Для Debian и Ubuntu

systemctl restart apache

Для CentOS, AlmaLinux, RockyLinux и CloudLinux

systemctl restart httpd

 

ОБРАТИТЕ ВНИМАНИЕ!

Рекомендуется сделать бэкап исходного исполняемого файла, чтобы в случае каких-либо проблем восстановить стандартную работу suexec.