Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как организовать Jail?  (Прочитано 4937 раз)
0 Пользователей и 1 Гость смотрят эту тему.
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« : 09-01-2005 22:48 » 

проблема
  У меня появился сервер, на котором будут тестироваться различные настройки для различных ПО
Часть этих настроек, само собой, не влияет на установленную систему, но такие как некоторые сервисные службы (модули pam_* и сервисы с ними связанные), после неправильной настройке которых нарушается работа сервера в целом. Тем более, не хочется давать много прав, а в Jail пользователь может почувствовать себя почти рутом Ага
  Мне необходимо, чтобы на этом FreeBSD 5.3 сервере некоторые пользователи, заходя в систему сразу бы переключались в свой Jail
Зачем это нужно?
Навскидку мне приходит следующее:
  • Создание "аквариума", при логине в который, пользоваель имеет домашнюю папку в качестве нормальной дирректории, а все остальное - новое при каждой новой сессии (2 логина не допускаются, для мультиплексирования терминала можно использоавать screen).  Так же, легко добавить в mount, чтобы
    В этом случае даже если пользователь получил права root, система и ее настройки не изменится после "локальных" изменений
  • Создание частичного "аквариума", в котором сохранялись бы изменения в некоторых папках, а все остальное бралось из основной
Как этого можно добиться?
Мне приходят следующие решения:
  • Решение #1: создание для каждого Jail своего world:
Код:
#! /bin/sh
SRCDIR = /usr/src
JAILS    = /home/user1 /home/user2 #, etc...

for i in ${JAILS}
do
  cd  ${SRCDIR}
  mkdir -p ${i}
  make world DESTDIR=${i}
  cd etc
  make distribution DESTDIR=${i}
  mount_devfs devfs ${i}/dev
  cd ${i}
  rm -rf boot
  ln -sf dev/null kernel
done
# запуск Jail, etc...
Но оно, явно, подходит только для одного, максимум двух пользователей, так как компилированная система занимает не так уж и мало, да и процесс компилляции не такой уж и быстрый(даже на SMP 2*P4 2.4MHz)
Можно чуть-чуть оптимизировать и собрать систему для одного пользователя и ее потом скопировать, но это не сильно повлияет на то, что эту систему будет легко использовать. Не говоря уже о том, что локальному пользователю будет тяжело управлять своей локальной конфигурацией при переустановке системы.
             -------------------------------------------------------------------------------------------------------------------------------[/li][li] ----------- Глюк тега LIST
Решение #2:Использование таких возможностей FreeBSD 5.x, как nullfs и unionfs.
Код:
#! /bin/sh
SRCDIR = /usr/src
JAILS    = /home/user1 /home/user2 #, etc...
UNION_OPTS =       # options for unionfs mounting. see mount_unionfs(8) for details & avaliable options
NULL_OPTS =          #options for nullfs mounting. see mount_null(8) for details & avaliable options
# after system recompilling & installing, at boot time
unset NULL_DIRS
unset UNION_DIRS
cd ${SRCDIR}
for i in ${JAILS}
do
  NULL_DIRS    = etc var tmp /usr/obj home usr/home
  UNION_DIRS  = usr/local usr/X11R6
  mount_null ${i}/root /
  # hiding dirs
  for j in NULL_DIRS
  do
    mkdir -p ${i}/${j}
    mount_null ${NULLFS_OPTS} ${i}/root/${j} ${i}/${j}
  done
  mkdir -p ${i}/${i}
  mount_null ${i}/${i} ${i}
  #unioning dirs
  for j in UNION_DIRS
  do
    mkdir -p ${i}/${j}
    mount_unionfs ${UNIONFS_OPTS} ${i}/root/${j} ${i}/${j}
  done
done
    Способ, безусловно, хорош, но есть одно большое и жирное НО: в манах по этим файловым системам (nullfs & unionfs) сказанно:
Цитата
THIS FILE SYSTEM TYPE IS NOT YET FULLY SUPPORTED (READ: IT DOESN'T WORK)
     AND USING IT MAY, IN FACT, DESTROY DATA ON YOUR SYSTEM.  USE AT YOUR OWN
     RISK.  BEWARE OF DOG.  SLIPPERY WHEN WET.

что, надо сказать не есть good
[/li][/list]
Времени на то, чтобы сидеть и дебаггить файловые системы в ядре FreeBSD, катастрофически не хватает. Кто-нибудь может помочь разобраться с этой шнягой?
« Последнее редактирование: 16-12-2007 18:47 от Алексей1153++ » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 11-01-2005 16:50 » 

Арсений, попробуй жесткие ссылки для статичных файлов. Изменяемые пользователем конечно придется копировать. Полноценным рутом себя пользователь, конечно, не почувствует.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 12-01-2005 14:57 » 

Нет, этот вариант, к сожалению, не проходит. буду пытаться со вторым вариантом что-то делать. Надо почитать списки рассылки
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines