Требования к связке: Обеспечить работу виртуальных пользователей путем отделения их от системы, в которой находится корень ОС, и тем самым обеспечить безопасность ее работы.
Требования к программам и версии: FreeBSD 4.x 5.x - с установленными портами(Желательно обновленные) OpenSSH 3.9.0.1 - не всегда последняя версия
Устанавливаем с помощью порта, который есть:Переходим # /usr/ports/security/openssh-portable
Авторство: Статья написана исключительно из собственного опыта - все что здесь написано используйте на Ваш страх и риск. Никакие потери не восполняются за наш счет.
Приступаем: Для начала нам нужны patch файлы для достижения нашей цели - забираем их тут, для Вашей версии есть разные патчи - не забываем когда скачиваем!
Теперь переходим в каталог # cd /usr/ports/security/openssh-portable #fetch http://chrootssh.sourceforge.net/download/osshChroot-3.9p1.diff
и далее я буду писать только комманды и короткое пояснение, дабы не отвлекаться от сути:
# make patch # ee osshChroot-3.9p1.diff теперь в самом файле, нужно подправить пути к каталогу. Выглядет это примерно так -
Код
1 2 3
diff -uNr openssh-3.9p1/session.c openssh-3.9p1-chroot/session.c --- openssh-3.9p1/session.c Thu Aug 12 08:40:25 2004 +++ openssh-3.9p1-chroot/session.c Tue Aug 24 15:44:55 2004
нужно поменять на
Код
1 2 3
diff -uNr work/openssh-3.9p1/session.c work/openssh-3.9p1/session.c --- work/openssh-3.9p1/session.c Thu Aug 12 08:40:25 2004 +++ work/openssh-3.9p1/session.c Tue Aug 24 15:44:55 2004
Как только все пути поменяли, запускаем patch
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# patch < osshChroot-3.9p1.diff Hmm... Looks like a unified diff to me... The text leading up to this was: -------------------------- |========================================================================= |diff -uNr work/openssh-3.9p1/session.c openssh-3.9p1-chroot/session.c |--- work/openssh-3.9p1/session.c Thu Aug 12 08:40:25 2004 |+++ work/openssh-3.9p1/session.c Tue Aug 24 15:44:55 2004 -------------------------- Patching file work/openssh-3.9p1/session.c using Plan A... Hunk #1 succeeded at 58. Hunk #2 failed at 1236. Hunk #3 succeeded at 1454 (offset 169 lines). 1 out of 3 hunks failed--saving rejects to work/openssh-3.9p1/session.c.rej done
Вот что получилось у меня. Тут второй процесс был сорван - не упешен. Я тоже думал что это плохо, и пошел искать в файле session.c нужную строку. Я нашел ее, только ниже - оказывается что там уже есть такая строка, тоесть уже замененная. Значит все ОК, и работаем дальше.
Теперь: # make # make install clean
Все. Порт установлен. Перезодим к настройки пользователей. Главное - все те кто будет работать в окружении chroot , должны быть "помечены" в файле /etc/master.passwd незатейливым способом. Где у пользователя директория выглядет
Код
1
/home/user
, теперь должна выглядеть как
Код
1
/home/user/./
Иправляем , тем кому предстоит жить в совем домике.
Теперь, для того чтобы все заработало, нужно дать в /home/user папки с бинарными внутренностями. Чтобы это дело автоматизировать, берем вот этот файл: http://rucable.net/doc/chroot_macher.sh
Запускаем его как
Код
1
# ./chroot_macher.sh user /usr/home/user
все. Пытаемся теперь зайти в окружение, используя пока тестовый аккаунт.
Если что то пошло не так, еще раз проверьте, правильно ли у Вас соответствуют каталоги, те что указаны в файле chroot_macher.sh . На версии 5.х замечаются некоторые баги, когда пользователи пытаются редактировать файлы в MC , почему то мы так и не нашли выход.
Спасибо: 1. всем тем то создал ПО, и распространяет его. 2. crash-у и Alan-у за тестирование и доработки.