Отправить заявку

CentOS: изменение AP_DOC_ROOT в suexec Apache

SuExec - это модуль web-сервера Apache, который позволяет запускать CGI и аналогичные собственные или сторонних разработчиков скрипты/программы внутри веб-папки домена от имени вполне конкретного пользователя (которому данная папка/домен принадлежат), а не от пользователя/группы от имени которого работает непосредственно сам Apache web-сервер.

По-умолчанию у suexec DOC_ROOT в CentOS (и других дистрибутивах линуксовых семейств) установлен /var/www, что не позволяет Apache запускать скрипты с других мест (например, /home), что в нашем случае является критически важным параметром.

Единственный нормальный вариант сделать это в Linux - перекомпилировать suexec с новыми параметрами.
Команды приведены для CentOS, но эта инструкция подойдёт и для других версий Linux (возможно с небольшими поправками). В основной своей массе, Linux используют большинство провайдеров. И Унико - интернет провайдер и аналогичные нарезают скорость, раздают интернет и предоставляют массу других услуг используя Линукс.

Узнаём установленную версию Apache:

# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42

Смотрим настройки установленной версии suexec:

# /usr/sbin/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -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_html"

Настраиваем (меняем AP_DOC_ROOT, остальные настройки те же):

# cd httpd-2.2.15
# ./configure --enable-suexec --with-suexec-caller=apache --with-suexec-userdir=public_html --with-suexec-docroot=/home --with-suexec-uidmin=500 --with-suexec-gidmin=100 --with-suexec-logfile=/var/log/httpd/suexec.log

и собираем suexec (не устанавливаем!)

# make

Смотрим права и владельца на установленную версию suexec:

# ls -l /usr/sbin/suexec
-r-s--x--- 1 root apache 14K Feb 14 02:33 /usr/sbin/suexec

Копируем новую версию, устанавливаем права:

# cp ./support/suexec /usr/sbin/suexec
# chown root:apache /usr/sbin/suexec
# chmod 4510 /usr/sbin/suexec

Проверяем права:

# ls -l /usr/sbin/suexec
-r-s--x--- 1 root apache 27K Apr 25 10:35 /usr/sbin/suexec

Проверяем новые настройки suexec:

# /usr/sbin/suexec -V
 -D AP_DOC_ROOT="/home"
 -D AP_GID_MIN=100
 -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_html"

Видно, что все настройки остались старые, изменился только DOC_ROOT. Все, что необходимо теперь - перезагрузить службу httpd для загрузки нового suexec.

Другие публикации