Apache suEXEC — это функция веб-сервера Apache . Это позволяет пользователям запускать приложения Common Gateway Interface (CGI) и Server SideIncludes (SSI) от имени другого пользователя. Обычно все процессы веб-сервера запускаются от имени пользователя веб-сервера по умолчанию (часто wwwrun, www-data, apache или none ). Функция suEXEC состоит из модуля для веб-сервера и двоичного исполняемого файла, который действует как оболочка. suEXEC был представлен в Apache 1.2 и часто включается в пакет Apache по умолчанию, предоставляемый большинством дистрибутивов Linux .
Если клиент запрашивает CGI и suEXEC активирован, он вызывает двоичный файл suEXEC, который затем оборачивает сценарии CGI и выполняет его под учетной записью пользователя серверного процесса (виртуального хоста), определенной в директиве виртуального хоста. [1]
Кроме того, suEXEC выполняет многоэтапную проверку исполняемого CGI для обеспечения безопасности сервера (включая проверки путей, ограничение разрешенных команд и т. д.) [2]
У пользователя «Алиса» есть веб-сайт, включающий несколько файлов сценариев общего интерфейса шлюза в ее собственной public_html
папке (имя общего корневого веб-каталога), доступ к которым можно получить с помощью https://example.com/~alice
.
Пользователь «Боб» теперь просматривает веб-страницу Алисы, для чего Apache требует запуска одного из этих CGI-скриптов.
Вместо запуска всех сценариев как «wwwrun» (что приводит к необходимости того, чтобы все сценарии были доступны для чтения и выполнения для группы «wwwrun», если файл принадлежит этой группе или для всех пользователей в противном случае), сценарии /home/alice/public_html
будут завернут с помощью suEXEC и запущены с идентификатором пользователя Алисы, что повышает безопасность и устраняет необходимость делать сценарии читаемыми и исполняемыми для всех пользователей или всех в группе «wwwrun» (вместо этого только сама Алиса должна иметь возможность запускать сценарий).