apache и mod_ruid
В кратце – собирается модуль mod_ruid, с помощью которого каждый вирт. хост будет работать под именем своего владельца. Это снимает проблему выставления прав 777, файлы и каталоги будут создаваться с тем же владельцем, которому принадлежит аккаунт.
При автообновлении из админки разного рода Joomla!, WordPress и т.д. больше не будут ругаться на невозможность создать каталог или файл.
Значительно повышается безопасность – можно выставить на каталоги права 750 и 640 на файлы, что исключит возможность доступа пользователей к чужим данным.
Стоит заметить, что производительность немного упадет, но все же это будет быстрее чем при использовании suPHP/CGI.
Ставим mod_ruid на сервер виртуального хостинга под управлением панели DirectAdmin.
Для сборки модуля необходима библиотека libcap.
# yum install libcap-devel
# RHEL
или
# aptitude install libcap2-dev
# debian
Качаем исходники модуля и собираем
# cd /usr/local/directadmin/custombuild
# wget -O mod_ruid2-0.9.7.tar.bz2 "http://downloads.sourceforge.net/project/mod-ruid/mod_ruid2/mod_ruid2-0.9.7.tar.bz2?r=&ts=1335638772&use_mirror=kent"
# tar xvf mod_ruid2-0.9.7.tar.bz2
# cd mod_ruid2-0.9.7/
Читаем README и собираем модуль
# apxs -a -i -l cap -c mod_ruid2.c
Модуль будет собран, проинсталирован и в httpd.conf будет добавлена строка
LoadModule ruid2_module
/usr/lib/apache/mod_ruid2.so
Теперь необходимо изменить httpd.conf. Открываем /etc/httpd/conf/httpd.conf, находим строки
User apache
Group apache
и добавляем ниже следующие директивы:
RMode config
RUidGid apache apache
RGroups apache
Копируем шаблоны виртуального хоста:
# cd /usr/local/directadmin/data/templates
# cp virtual_host2* custom
/
# cd custom
Открываем шаблон и после |USECANONICALNAME| добавляем следующие директивы:
# SuexecUserGroup |USER| |GROUP|
RMode config
RUidGid |USER| |GROUP|
RGroups apache
Строку с SuexecUserGroup необходимо закоментировать.
Чтобы пользователи могли нормально работать с phpmyadmin / webmail добавим описание директорий с указанием владельца webapps:
<location /phpMyAdmin>
RMode config
RUidGid webapps webapps
RGroups apache
</location>
<location /phpmyadmin>
RMode config
RUidGid webapps webapps
RGroups apache
</location>
<location /squirrelmail>
RMode config
RUidGid webapps webapps
RGroups apache
</location>
Эти изменения нужно сделать во всех 4-х шаблонах. После чего, пересоздаем httpd.conf виртуальных хостов:
# echo “action=rewrite&value=httpd” >> /usr/local/directadmin/data/task.queue
# /usr/local/directadmin/dataskq d800
Проверяем синтаксис конфигурации apache, если все нормально – рестартуем веб-сервер:
# apachectl configtest
Syntax OK
# /etc/init.d/httpd restart
Stopping httpd: Remaining processes: 16003 16118 32155
Stopping httpd: OK
Starting httpd: OK
Смотрим ‘top’ и видим какой пользователь сколько и чего потребляет.
top - 15:03:17 up 76 days, 1:12, 1 user, load average: 0.19, 0.43, 0.38 Tasks: 68 total, 1 running, 67 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 98.3%id, 1.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 906284k total, 708884k used, 197400k free, 145488k buffers Swap: 2097144k total, 756k used, 2096388k free, 398276k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21785 adminco 16 0 162m 42m 26m S 43 4.1 0:14.56 httpd 4029 adminco 15 0 161m 113m 99m S 31 11.1 4:55.01 httpd 23944 adminco 15 0 161m 29m 12m R 24 2.8 0:01.86 httpd 30611 mysql 15 0 173m 137m 6056 S 8 13.5 7:32.19 mysqld 7313 adminco 15 0 163m 106m 90m S 5 10.4 4:46.85 httpd 23954 apache 15 0 155m 22m 10m S 4 2.2 0:00.09 httpd 13837 apache 10 -5 64032 6920 1844 S 1 0.7 1:39.20 nginx
Необходимо запретить использование функции dl() в php.ini.
А еще желательно восстановить владельца файлов/каталогов в public_hml
Можно так:
# cd /usr/local/directadmin/scripts ; ./set_permissions.sh user_homes
# find /home/*/domains/*/public_html -type d -print0 | xargs -0 chmod 711
# find /home/*/domains/*/public_html -type f -print0 | xargs -0 chmod 644
# cd /usr/local/directadmin/data/users
# for i in `ls`; do { chown -R $i:$i /home/$i/domains/*/public_html;}; done;
Если используются perl-скрипты, то этим файлам также надо поправить права:
find /home/. -type f -name ‘*.cgi*’ -exec chmod 755 {} \;
find /home/. -type f -name ‘*.pl*’ -exec chmod 755 {} \;
find /home/. -type f -name ‘*.pm*’ -exec chmod 755 {} \;
# chown -R webapps:webapps /var/www/html/
# find /var/www/html -type f -print0 | xargs -0 chmod 644
# find /var/www/html -type d -print0 | xargs -0 chmod 711
Теги: apache, mod_ruid