JAIL во FreeBSD. Нужен совет админов!

noiz_music

Всем привет.
Есть Control Panel (далее CP) для автоматизации хостинга, которая в частности делает следующие вещи
1) следит за тем сколько пользователь истратил из отведенной ему квоты дискового пространства на его home-каталог
2) создает VirtualHost в конфиге apache
ну вобщем стандартные вещи.
Но при добавлении в систему пользователя и при предоставлении ему shell-доступа CP не делается никаких chroot, а уж тем более jail'ов.
И задача состоит в том, чтобы при создании пользователя, он крутился в свом jail'е.
Я не админ, а программист, но разобраться надо очень срочно. Не мог бы кто-нибудь ответить хотя бы в двух словах мне на следующие вопросы:
как мне сделать jail для каждого пользователя, чтобы это было прозрачно для Control Panel? В том смысле,
1) что при запросах CP к OS насчет использованного дискового пространства, ей возвращалось бы то же самое значение, как если никаких jail'ов не было бы?
2) не производить НИКАКИХ манипуляций с работающим apache, в котором крутятся все VirtualHost'ы, у которых DocumentRoot находится в home'ах пользователей? Здесть я просто несвосем понимаю, что надо делать с apache при организации jail'а. Копировать весь apache и настраивать его под конкретный jail? Можно ли это обойти?
Спасибо!

SvinkaVJeansah

1) что при запросах CP к OS насчет использованного дискового пространства, ей возвращалось бы то же самое значение, как если никаких jail'ов не было бы?
2) не производить НИКАКИХ манипуляций с работающим apache, в котором крутятся все VirtualHost'ы, у которых DocumentRoot находится в home'ах пользователей? Здесть я просто несвосем понимаю, что надо делать с apache при организации jail'а. Копировать весь apache и настраивать его под конкретный jail? Можно ли это обойти?
ИМХО, эти штуки возможны в chroot-е, но не в jail.

spirinale

как мне видится решение по сажанию всего в тюрьмы:
СР вне джейлов (для нормального обращения с квотами хотя можно и его посадить в тюрьму следующим образом: вне джейлов вешается скрипт, который периодически проверяет квоты и пишет их в файл, который находится в джейле, а СР уже читает из него; либо повесить скрипт, который слушает какой-нибудь джейловый сокет и при запросе выдает текущие значения. Создавать пользователя извне джейла в джейле можно аналогично обычному созданию.
в джейле уровнем ниже сидит апач со всеми пользователями. Если честно, то не вижу смысла в заведении джейлов для каждого отдельного пользователя. В джейл апач перебрасывается элементарно: создается джейл, собирается там апач, копируются все конфиги и файло юзверей, пускается апач.
Здесть я просто несвосем понимаю, что надо делать с apache при организации jail'а. Копировать весь apache и настраивать его под конкретный jail?
настройка зависит от того как ты организуешь джейл.
Можно ли это обойти?
если скопируешь всю инфу апача в джейл, и IP джейла будет тем же, на котором раньше висел апач, то конфиги последнего можно, в принципе, и не трогать

krishtaf

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

Marinavo_0507

> Если честно, то не вижу смысла в заведении джейлов
> для каждого отдельного пользователя.
Чтобы скрипты одного пользователя не могли нагадить другим.
Для безопасности, то есть, и без оверхеда в виде exec на каждый запрос, как с suexec или там suphp.

sergey_m

1) что при запросах CP к OS насчет использованного дискового пространства, ей возвращалось бы то же самое значение, как если никаких jail'ов не было бы?
Квоты и тюрьмы ортогональны. Квоты есть per-UID per-partition сущность. Ты не можешь выдавать дисковые квоты полноценным тюрьмам, потому, что в тюрьмах используются те же самые UIDы, что и извне. Под полноценной тюрьмой я понимаю полную инсталляцию FreeBSD в отдельный каталог и запуск jail /bin/sh /etc/rc. Если же, ты будешь запускать в jail только апач и сразу запускать его с UID данного пользователя (ключи -u/-U команды jail и для каждой тюрьмы у тебя будет свой отдельный UID, то тогда ты вполне можешь применять квоты к jailам. Потому что в этом случае, все процессы в какой-то тюрьме будут принадлежать одному UID, а значит и все создаваемые файлы тоже.
2) не производить НИКАКИХ манипуляций с работающим apache, в котором крутятся все VirtualHost'ы, у которых DocumentRoot находится в home'ах пользователей? Здесть я просто несвосем понимаю, что надо делать с apache при организации jail'а. Копировать весь apache и настраивать его под конкретный jail? Можно ли это обойти?
jail всегда подразумевает chroot, поэтому ты не можешь обойти необходимость наличия апача в каждой тюрьме. Конечно, ты можешь сделать хардлинки.

spirinale

Квоты и тюрьмы ортогональны. Квоты есть per-UID per-partition сущность. Ты не можешь выдавать дисковые квоты полноценным тюрьмам, потому, что в тюрьмах используются те же самые UIDы, что и извне.
Ну почему? Можно же на тюрьму выделить партицию и на ней задавать квоты сколько влезет.

sergey_m

Если на тюрьму выдать партицию, то можно уже и не делать квоты.

Vlad77

del
Оставить комментарий
Имя или ник:
Комментарий: