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