Купи доменное имя для своего блога, персональной web-странички или нового интернет проекта по выгодным ценам. Зарегистрировать домен в зоне .РФ или .RU за 195 руб.

Как использовать Jail (или как сделать chroot)

Нередко, в целях безопасности необходимо, чтобы определённые приложения были запущены в своём окружении, например apache c PHP. У меня же стояла задача дать человеку доступ к серверу через SSH (SFTP), но при этом ограничить его только своей папкой.

Установка Jail

Для подобной задачи я посоветую вам воспользоваться готовыми утилитами - JailKit или Jail. Я рассмотрел оба решения, но Jail мне показался более прост.

Итак, для начала нужно утстановить Jail (я работаю в Gentoo Linux, поэтому всё написанное будет в контексте этой операционной системы)

emerge -av jail

Теперь создаём нашего пользователя, указываем ему домашнюю папку как /var/chroot, а в качестве шела будет выступать /usr/bin/jail.

useradd -g users -d /var/chroot/ -s /usr/bin/jail <USERNAME>
passwd <USERNAME>

Настраиваем chroot-окружение

CHROOT=/var/chroot
mkjailenv $CHROOT
mkdir $CHROOT/lib
cp /lib/ld-linux.so.2 $CHROOT/lib/

Связываем пользователя с chroot-окружением.

addjailuser $CHROOT /home/<USERNAME> /bin/bash <USERNAME>

Далее самое интересное, добавляем приложения, которые будут в нашем chroot-окружении. Важным тут является bash, без него никак :-)

addjailsw $CHROOT
addjailsw $CHROOT -P /bin/bash

Добавляем SFTP для нашего chroot-окружения

Ну а если нужен доступ через sftp, делаем

addjailsw $CHROOT -P /usr/bin/sftp

Правда утилита addjailsw запускает sftp и через strace отслеживает какие библиотеки использует приложение и так же их копирует. Но при запуске sftp меня попросили ввести пароль, что меня позабавило :-)

Странно, что addjailsw не использует, для это цели ldd, что вроде проще.

А как же файлы и папки проектов?

Вроде и всё, безопасное место нашего разработчика готово, нехватает только нужных папок. Задача следующая, имеется папка с проектом, нужно сделать символическую ссылку в наш chroot. Мягкие ссылки тут не подойдут, увы. Делаем жусткую ссылку

mkdir $CHROOT/home/<USERNAME>/projects
mount --bind <PATH>/projects $CHROOT/home/<USERNAME>/projects

Так-же надо не забывать, что жёсткие ссылки не сохраняются и существуют до тех пор, пока не будет перезагружен сервер.

Осталось проверить

ssh <USERNAME>@localhost

Не знаю как у вас, но у меня работает, я в темнице :-)

Регистрация доменов .РФ или RU за 195р!!!
Совместно с регистратором onreg.ru мы проводим акцию! Купи домен для своего блога или нового интернет проекта по выгодным ценам. Так домен в зоне .RU или .РФ стоит всего 195 рублей. При покупке нескольких доменов, возможны скидки. На onreg.ru есть система тикетов, через которую мы всегда готовы ответить на все ваши вопросы и предложения.


Комментарии
  • blinkenlichten — 16.01.2011 #1

    Спасибо, очень просто и понятно!

Оставить комментарий
Ваше имя:
E-mail:
Сайт (блог):
Сообщение:
Если вы не робот, введите код: