Установка Mod_ruid2 в ISPManager на CentOS
Раздел(ы): GNU Linux - CentOS / Debian
Просмотры: 6967
Комментарии: 0
Возникла задача, чтобы запросы к 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 — это пользователь от имени которого создан домен. У вас будет другой 🙂
А как же быть с существующими доменами ранее созданными в панели? Просто добавьте эти записи в файл конфигурации домена. И перегрузите веб-сервер.