[PHP][Apache] Изоляция пользователей.

12
DavyJohnes
На сайте с 05.01.2011
Offline
84
1896

Имеется Unix-like сервер с apache2+php+mysql. Имеется некая веб-морда с возможностью авторизации пользователей. Имеется N пользователей веб-морды, каждый из которых имеет свое отражение в системе (каждому юзеру в базе данных соответствует юзер в системе).

Задача: изолировать юзеров таким образом, чтобы после авторизации на сайте, все процессы php, инициируемые пользователем, выполнялись от имени пользователя системы который ему однозначно соответствует.

Очевидно что Mod_php здесь не подойдет, а так же, для лучшей изоляции процессов был выбран mpm_worker (или что то иное тредовое) + mod_fcgid + php-fpm.

Варианты решения:

- для каждого из юзеров сделать свой поддомен типа userX.mysite.net, создать соответствующий virtualhost в апаче на этом поддомене и указать в его настройках пользователя от которого будут запускаться все процессы.

- в каждом из запускаемом php скриптов проверять на предмет авторизации, и в положительном случае, писать в скрипте

exec(sudo -i -u <username>);

- в каждом из запускаемом php скриптов проверять на предмет авторизации, и в положительном случае устанавливать apache переменную окружения. В конфиге апача соответствующим образом обрабатывать эту переменную окружения.

Какие из вариантов вы считаете наиболее приемлемым, или быть может предложите свой? Буду признателен за аргументы.

https://handy-tools.io (https://handy-tools.io) - Набор полезных утилит для всех!
G.Vad!k
На сайте с 04.10.2007
Offline
74
#1

Статьи вам в помощь: один и два

Andreyka
На сайте с 19.02.2005
Offline
822
#2

Например itk

Не стоит плодить сущности без необходимости
izyalex
На сайте с 06.04.2009
Offline
60
#3
Andreyka:
Например itk

http://mpm-itk.sesse.net/

Сpanel хостинг (http://bit.ly/Vjwlfl) и ISPmanager хостинг (http://bit.ly/11NnOqJ) от 119р./мес VIP Премиум хостинг (http://bit.ly/VibYQ9) в Москве, 1000р./мес и не парюсь
DavyJohnes
На сайте с 05.01.2011
Offline
84
#4

Т.е. как я понял, вы все неявно указываете на первый вариант?

- для каждого из юзеров сделать свой поддомен типа userX.mysite.net, создать соответствующий virtualhost в апаче на этом поддомене и указать в его настройках пользователя от которого будут запускаться все процессы.
M
На сайте с 16.09.2009
Offline
278
#5
DavyJohnes:
Очевидно что Mod_php здесь не подойдет, а так же, для лучшей изоляции процессов был выбран mpm_worker

Выбиральщик вообще вкурсе отличий процесса от потока?

DavyJohnes:
Варианты решения:

Первый, конечно.

Как запускать *все* под разными пользователями - вам уже привели пример. Вот варианты:

1) itk mpm или mod_suid2 и аналогичные вещи

2) по апачу на каждого пользователя

3) не страдать фигней - и пускать отдавать статику под одним, общим пользователем. А для скриптов использовать fastcgi, cgi, suphp, и т.д.

Как устроена система URL "снаружи" (видит ли пользователь отдельные "домены" или нет) - уже третьестепенная вещь, конечно.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
iHead
На сайте с 25.04.2008
Offline
137
#6

технически можно еще от рута веб-сервер запустить и...

http://php.net/manual/en/ref.posix.php

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
DavyJohnes
На сайте с 05.01.2011
Offline
84
#7
iHead:
технически можно еще от рута веб-сервер запустить и...
http://php.net/manual/en/ref.posix.php

Да, спасибо, изучал этот вариант. Но как то от рута ссыкотно запускать паблик сервер.

izyalex
На сайте с 06.04.2009
Offline
60
#8

чем mpm-itk не устраивает?

DavyJohnes
На сайте с 05.01.2011
Offline
84
#9
izyalex:
чем mpm-itk не устраивает?

Разве я сказал что он меня не устраивает? Просто интересуют все возможные варианты.

Andreyka
На сайте с 19.02.2005
Offline
822
#10

Ааа. Ну я бы посоветовал побить сервер на виртуалки, в каждой виртуалке - по апачу от юзера. На всех приватные адреса а соеденять через nginx на ноде с реальным ip.

Вариант?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий