Виртуальный хостинг, PHP как модуль Apache

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
FSA
рядовой
Сообщения: 25
Зарегистрирован: 2007-09-17 0:38:42
Откуда: Тавда, Россия.
Контактная информация:

Виртуальный хостинг, PHP как модуль Apache

Непрочитанное сообщение FSA » 2007-09-18 15:16:16

На этом сайте нашёл как настроить подобное, что PHP работает через CGI. Однако хотелось бы заставить PHP работать как модуль Apache. Частично задача решена, но остались явные дыры в безопасности и кой-какой глюк. Итак о реализации.

Пользователи заводятся в системе как обычно, без каких либо особенностей, разве что их домашние папки помещаются на отдельный раздел. Во-первых, это помогает избежать проблем в работе сервера из-за переполнения раздела, во-вторых, позволяет обезопасить сервер, т.к. данный раздел должен быть смонтирован с опцией SUIDDIR (зачем поясню позже).
Все домашние папки пользователей имеют права 4770, т.е. работает SUIIDDIR, полный доступ для пользователя, полный поступ для группы, всем остальным запрет. Папки пользователя принадлежат ему, а вот группа указывается www, т.е. той, от имени которой работает Apache. Т.о. всем пользователи и Apache (в том числе и PHP) имею права работать с файлами и папками. При чём при создании файлов и папок с домашнем каталоге мы имеем владельца для них user:www за счёт SUIDDIR.
Теперь о работе Apache. PHP работает в обычном режиме, т.е. фактически от www:www. Safe_mode можем не включать, разграничение пользователей происходит за счёт open_basedir. Тут поджидает первая засада, которую я так и не преодолел: при вызове внешних приложений они запускаются от имени www:www, что нам абсолютно ненужно. Выходов два:
1. Запрещать полностью запуск внешних программ.
2. Пропатчить PHP таким образом, чтобы при вызове внешних программ он запускал их через suexec (меня интересует имено этот вариант).
Работа CGI производится в обычном режиме, в настройках вируальных хостов используются директивы User и Group. Вот тут вторая засада. Поскольку мы используем нестандартные права на папки пользователей user:www suexec отказывается работать, т.к. видит, что группа чужая. Следовательно патчим suexec.c таким образом, чтобы не проводить проверку группы, либо сравнивать её не с текущим пользователем, а с gid пользователя Apache. Задача не такая сложная, тем более файл где копать нужно я уже указал.
Да, ещё нужно не забыть перед запуском Apache дать команду umask 007, дабы создаваемые файлы имели права типа 660, т.е. с запретом работы с файлом никому, кроме user и group.

Теперь о глюке, который также не смог преодолеть. Каким то странным образом при загрузке файлов на сервер файл принимается благополучно во временную папку при этом приобретая атрибуты user:www 0700. Вот тут то и есть засада - PHP после загрузки ничего не может сделать с файлом, поскольку для группы www возникает запрет. Откуда появилась umask 077 я так и не понял. При этом файлы, создаваемые PHP имею правильные атрибуты.

Итак, подводя итог, напишу о нерешённых проблемах:
1. Требуется патч для PHP, чтобы вызов внешних программ производился через suexec.
2. Требуется патч для правильной реализации Upload файлов.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35418
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Виртуальный хостинг, PHP как модуль Apache

Непрочитанное сообщение Alex Keda » 2007-09-25 1:02:32

всё-таки невижу смысла....
сколько процентов быстродействия будет выиграно?
Окупится ли возросшая сложность поддержки?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
FSA
рядовой
Сообщения: 25
Зарегистрирован: 2007-09-17 0:38:42
Откуда: Тавда, Россия.
Контактная информация:

Re: Виртуальный хостинг, PHP как модуль Apache

Непрочитанное сообщение FSA » 2007-09-25 15:48:07

Думаю смыл есть. В своё время тема мусолилась на одном из форумов в сети, очень активно вёл себя администратор хостинга на котором у меня находятся сайты (чтобы не было рекламы не называю, кому надо сам узнает). Он как раз и говорил о таком хостинге.
Кстати, подобный механизм я вывел как раз исследуя настройки хостинга, где у меня размещается сайт (ко всему прочему у них ещё и открыт SSH доступ).
P.S. Кстати, интерес уже чисто спортивный. Сервер у меня стоит сейчас, но им никто не пользуется.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35418
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Виртуальный хостинг, PHP как модуль Apache

Непрочитанное сообщение Alex Keda » 2007-09-25 18:00:30

вишь....
а я до фастЦГИ дополз и пока успокоился.
есть голубая мечта - нгинкс с фастЦГИ - вообще без апача - но пока не видел подобных реализаций, или искал плохо...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
XoRe
рядовой
Сообщения: 13
Зарегистрирован: 2007-10-15 18:04:04
Откуда: Россия
Контактная информация:

Re: Виртуальный хостинг, PHP как модуль Apache

Непрочитанное сообщение XoRe » 2007-10-15 21:10:34

FSA писал(а):2. Требуется патч для правильной реализации Upload файлов.
Если загрузка файлов идет по ftp, то...
man proftpd:

Код: Выделить всё

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           002
А если не по ftp, то расскажите подробнее, как )
<'\/'>

Аватара пользователя
FSA
рядовой
Сообщения: 25
Зарегистрирован: 2007-09-17 0:38:42
Откуда: Тавда, Россия.
Контактная информация:

Re: Виртуальный хостинг, PHP как модуль Apache

Непрочитанное сообщение FSA » 2007-10-15 21:25:51

http://wiki.sysfaq.ru/w/index.php/%D0%A ... 0%B3%D0%B0
Вот тут описали то, что я пытался реализовать.