Как установить apache2-mpm-itk на Debian Linux?
ITK это патч к традиционной линуксовой модели Prefork, позволяющий выполнение скриптов с правами пользователя, например в случае с mod_php, с традиционной (не мультиюзерной) моделью, все скрипты выполняются с правами пользователя www-data в Debian или пользователя apache в большинстве случаев, соответственно страдает безопасность сервера, т.к. даже если жестко ограничить функции и open_basedir, это не обеспечит 100% изоляции, права остаются правами, и с традиционной моделью весь код выполняется от apache.
Итак, инсталляция apache2-mpm-itk на Debian Linux в связке с ISPManager:
1. Проверяем от какого пользователя сейчас работает:
Пишем скриптик на php такого вида:
<?php echo exec('id'); ?>
Сохраняем его в uid.php и заливаем на сервер, затем выполняем в браузере, результат должен быть примерно такой:
uid=77(www-data) gid=77(www-data) groups=77(www-data)
2. Устанавливаем готовый бинарник mpm-itk:
# aptitude install apache2-mpm-itk
Перезапускаем apache:
#/etc/init.d/apache2 restart
Всё должно пройти гладко, т.к. бинарник apache с itk присутствует в стандартном репозитории начиная с Lenny.
Aptitude предложит удалить конфликтующие пакеты типа Prefork – на всё отвечайте Yes.
3. Правим секции virualhost в apache2.conf:
Новые директивы ITK, по сравнению с prefork:
AssignUserID принимает 2 параметра, uid и gid через пробел, соответственно для правильной работы механизма, требуется заменить все вхождения «SuexecUserGroup» на «AssignUserID», в каждом виртуалхосте файла /etc/apache2/apache2.conf.
4. Половина дел сделана, проверяем работу:
Снова выполняем наш скрипт uid.php и мы уже видим совсем другую картину:
uid=700(username) gid=702(username) groups=701(mgrsecure),702(username)
Все работает отлично!
5. Добавим в конфиг ISPManager’а строку, чтоб новые аккаунты были правильные:
Собственно выполняем код в шелле:
# echo ‘Option ApacheMPM’ >> /usr/local/ispmgr/etc/ispmgr.conf && killall ispmgr
П.С. Проверьте все права пользователей, там где были выставлены apache и /var/www/username/data/mod-tmp.