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