Веб-сервер возвращает "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.