Изменение 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"