Plesk & mod_ruid2

Многие пользователи продукта Parallels Plesk не раз столкнулись с проблемой запуска php скриптов под правами аккаунтов пользователей а не apache. Проблема особенно начинает действовать на нервы, когда пытаешься установить какую-либо cms, либо загружаешь/создаёшь файлы через php скрипты. После этого пользователь просто не может получить доступ к собственным файлам по FTP, так как файлы наследуются пользователем apache. В плеске предусмотрен режим работы php как FastCGI приложения, но это очень корявый и тормозной режим, по этому его можно отметать сразу.

Наверняка многие рассматривали различные варианты с применением itk модуля, и подобных ему. Могу сказать, что исходя из моего опыта, лучше даже и не пытаться совместить модуль itk с хостингом на  базе Parallels Plesk. В моём случае это кончилось неимоверными глюками, а самое страшное, появлением процессов apache, запущенных от рута. (уж не знаю, как такое вообще получилось.)

Но рабочий вариант всё-же имеется.

Существует очень интересный модуль для apache, который называется mod_ruid2. Предприимчивые девелоперы даже написали плагин для Plesk’a, который КАК БЭ встраивает поддержку модуля в панель управления. И я даже купил его, о чём потом горько пожалел… Плагин первое время работал нормально, но потом начали происходить странности с конфигурацией отдельных клиентских подписок. Как жаль. Ведь проблема на самом деле была не в самом модуле, а в написанном ногами конфигураторе для Plesk. Проблема в том, что для работы модуля требуется внести в конфигурацию домена несколько лишних строк, и было бы совсем хорошо, если бы Plesk поддерживал такие костыли. Но увы, такой возможности у него нет. 

А теперь давайте дружно порадуемся тому, что наша задача вполне решается бесплатно. :)

На самом же деле, в конфигурации требуется всего то навсего указать, от имени какого пользователя и группы нужно запускать скрипты. И ведь Plesk вносит такую директиву, но только она называется по-другому, потому что она для FastCGI. Догадываетесь что нужно сделать?! :)

Правильно! Посылаем спекулянтов нафиг, и качаем пропатченный mod_ruid2_by_ibuben

Если заглянуть в код, то видно, что суть патча заключается в основном в изменении имени директивы с “RUidGid” на “SuexecUserGroup”. Теперь модуль будет читать директиву, предназначенную для FastCGI. Ну и кое-что по мелочи.

Осталось лишь скомпилировать модуль и прописать его в конфиге вебсервера.

yum install libcap (если библиотека ещё не установлена.)

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

vi /etc/httpd/conf.d/mod_ruid2.conf

LoadModule ruid2_module /usr/lib64/httpd/modules/mod_ruid2.so
<IfModule mod_ruid2.c>
RMode stat
RGroups apache psaserv psacln
RMinUidGid apache apache
</IfModule>

После этих действий у вас перестанет работать FastCGI. Но лично я вообще не знаю, кому это нужно. Главное, не забудьте вырубить пользователям возможность менять режим работы php.

Если посчитаете нужным, можете отблагодарить меня материально http://exunity.net/donations/ (чисто символически…) :)