Установка Mod_ruid2 в ISPManager на CentOS

 29 сентября 2014      
 Linux - CentOS      
 Комментариев еще нет

Возникла задача, чтобы запросы к www-домену обрабатывались Apache под пользователем-владельцем www-домена, а не под apache:apache.
Очень неудобно, когда скриптам, которые запускает веб-сервер Apache, нужны права доступа на запись и приходится давать разрешения 777, так как сам Apache не входит в группу пользователя-владельца домена.

Если же веб-сервер будет обращаться к домену от имени владельца домена, то Apache перестанет быть обезличенным и будет видно какой пользователь грузит веб-сервер, и отпадает проблема с правами доступа к папкам пользователя со стороны веб-сервера, так как будет доступ от имени пользователя с правами пользователя.
У меня на сервере CentOS установлена панель управления хостингом ISPManager-Lite. Но в ней возможности потыкать мышкой, чтобы решить эту задачу я не нашел. Поэтому придется все делать руками.

Модуль Mod_ruid2 для сервера Apache

Одно из возможных решений, чтобы запросы к www-домену обрабатывались Apache от имени пользователя-владельца домена — это использовать модуль Mod_ruid2.
Другой альтернативный вариант разрешения конфликтов — это использование PHP в конфигурации CGI/FastCGI. Либо использовать Apache MPM-ITK.

Установка mod_ruid2

Я не нашел модуль mod_ruid2 в репозиториях CentOS. Поэтому прибавил себе работы. Но все не так сложно.
Сначала установим зависимости:

# yum install libcap-devel

Затем скачаем последнюю версию mod_ruid2 по адресу http://sourceforge.net/projects/mod-ruid/files/latest/download
На момент написания статьи это выглядело так:

# wget http://heanet.dl.sourceforge.net/project/mod-ruid/mod_ruid2/mod_ruid2-0.9.8.tar.bz2

Распаковываем архив и собираем модуль:

# tar xvjf mod_ruid2-0.9.8.tar.bz2
# cd mod_ruid2-0.9.8
# apxs -a -i -l cap -c mod_ruid2.c

Если apxs отсутствует в системе, то устанавливаем его:

# yum install httpd-devel

И повторяем сборку:

# apxs -a -i -l cap -c mod_ruid2.c

В итоге должны получить успешное сообщение с адресом куда инсталлирован модуль. У меня это выглядело так: Libraries have been installed in: /usr/lib64/httpd/modules
И что модуль активирован в веб-сервер Apache: activating module `ruid2′ in /etc/httpd/conf/httpd.conf
На всякий случай проверьте, что модуль находится по указанному адресу ‘ /usr/lib64/httpd/modules/mod_ruid2.so‘ (для CentOS 6.5 x64).
И что в файле конфигурации по адресу ‘/etc/httpd/conf/httpd.conf‘ есть строка (справедливо для CentOS 6.5 x64):

LoadModule ruid2_module       /usr/lib64/httpd/modules/mod_ruid2.so

Чтобы все заработало осталось только перезагрузить веб-сервер:

# service httpd restart


Настройка ISPManager для Mod_ruid2 и Apache

Добавляем поддержку в ISPmanager. Для этого создаем файл /usr/local/ispmgr/etc/virtualhost.templ со следующим содержимым:

SuexecUserGroup __SuexecUserGroup__
RUidGid __SuexecUserGroup__

После чего перегружаем панель:

# killall ispmgr

Теперь при создании нового домена в его конфигурационном файле вы должны увидеть следующие строки:

Где moonback — это пользователь от имени которого создан домен. У вас будет другой 🙂
А как же быть с существующими доменами ранее созданными в панели? Просто добавьте эти записи в файл конфигурации домена. И перегрузите веб-сервер.

Использованные источники

  1. Добавить поддержку mod_ruid2 в ISPmanager
  2. Помогите с пакетом apxs
  3. Mod ruid2

 Метки:  , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Технический блог © 2016
SQL - 38 | 0,155 сек. | 6.96 МБ