Изменение AP_DOC_ROOT в suexec Apache на Alma Linux 8
установить Apache 2:
dnf install httpd mod_fcgidдиректории пользователей планирую создавать в /home. модуль suexec не будет в данной директории работать, он по умолчанию настроен на /var/www. проверить можно:
/usr/sbin/suexec -Vвыведет примерно:
-D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_SYSLOG
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="public_html"AP_DOC_ROOT – каталог, в котором возможен запуск CGI-сценариев. В данном случае – /var/www и все его подкаталоги. Программы, расположенные в других каталогах, например, в /home, исполняться не будут.
AP_GID_MIN, AP_UID_MIN – минимальный UID и GID владельца, для которого разрешен запуск CGI.
AP_HTTPD_USER – имя пользователя, от которого запущен Apache. Никто, кроме указанного пользователя, использовать по назначению suexec не может. В случае попытки в лог будет записано сообщение: user mismatch (имя_пользователя instead of www).
AP_LOG_EXEC – имя лог-файла suexec.
AP_SAFE_PATH – список путей, признанных безопасными. Здесь перечислены дополнительные каталоги, откуда возможен запуск программ.
AP_USERDIR_SUFFIX – имя каталога, откуда следует запускать программу в случае, если имя пользователя указано в виде ‘~username.
AP_SUEXEC_UMASK – маска прав при создании файлов и каталогов.
в параметре AP_DOC_ROOT указана директория в которой работает suexec. для изменения нужно перекомпилировать httpd и suexec.
для перекомпеляции проверяем версию httpd:
httpd -vна текущий момент вывело, что версия 2.4.37:
Server version: Apache/2.4.37 (AlmaLinux)
Server built:   Oct 18 2023 12:00:09архив исходников доступен по адресу: https://archive.apache.org/dist/httpd/
создать директорию для исходников:
mkdir -p /opt/source/httpdперейти в директорию для исходников:
cd /opt/source/httpdзагрузить подходящий исходник:
wget https://archive.apache.org/dist/httpd/httpd-2.4.37.tar.gzразарзивировать:
tar -xzvf httpd-2.4.*.tar.gzперейти в распакованные исходники httpd:
cd httpd-2.4.*/установить необходимые библиотеки для конфигурирования:
dnf install redhat-rpm-config apr-devel apr-util-devel pcre-develконфигурирование:
 --with-suexec-safepath=/opt/php:/usr/local/bin:/usr/bin:/bin./configure --enable-suexec --with-suexec-caller=apache --with-suexec-userdir=public --with-suexec-docroot=/home --with-suexec-uidmin=500 --with-suexec-gidmin=1000 --with-suexec-logfile=/var/log/httpd/suexec.logскомпилировать:
make -j2проверить права и владельца установленной suexec:
ls -l /usr/sbin/suexecрезультат в моем случае:
-r-x--x--- 1 root apache 20888 Oct 18 19:00 /usr/sbin/suexecпереименовать текущаю версию:
mv /usr/sbin/suexec /usr/sbin/suexec_backскопировать скомпилюную версию:
cp ./support/suexec /usr/sbin/suexecустановить владельца и права:
chown root:apache /usr/sbin/suexec && chmod 0510 /usr/sbin/suexecпроверить новую suexec:
/usr/sbin/suexec -Vполучился результат:
-D AP_DOC_ROOT="/home"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_EXEC="/var/log/httpd/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX="public"