Многие пользователи продукта 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/ (чисто символически…) :)