Устанавливаем необходимые для сборки пакеты:
И желательные для конфигурации:
Переходим в директорию, где будем собирать пакет:
Скачиваем его:
Распаковываем:
Переходим в директорию с пакетом и с удивлением находим, что самый обычный тарбол с сорцами уже готов к сборке на Debian (об этом говорит директория debian с внутренними файлами):
В пакете есть неболшой косячок с LSB-тэгами, поэтому можно их до сборки руками поправить:
Создадим директорию, в которую будем чрутить наших пользователей:
Для начала откроем файл /etc/jailkit/jk_init.ini и посмотрим, что в нем. Файл разбит на комплекты пробрасываемых файлов, объединенных по целевым принципам. Например если пользователю надо иметь возможность примитивных действий с сетью (хотябы отрезолвить кого-то), то есть комплект [netbasics]. Если же ему кроме первого надо еще и rsync использовать, то кроме [netbasics] для него придется прокинуть комплект [rsync]. Причем [rsync], как видно в конфиге, включает в свои зависимости и [netbasics] и [uidbasics], а значит если мы скажем утилите jk_init включить [rsync], он включит все три автоматически.
Итак включим пользователю [rsync], [git] и [basicshell],
Готово, можно логиниться под любым пользователем, который состоит в группе users - например testuser.
apt-get install debhelper devscripts
И желательные для конфигурации:
apt-get install libcap-dev
Переходим в директорию, где будем собирать пакет:
cd /usr/src
Скачиваем его:
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
Распаковываем:
tar xzf jailkit-2.14.tar.gz
Переходим в директорию с пакетом и с удивлением находим, что самый обычный тарбол с сорцами уже готов к сборке на Debian (об этом говорит директория debian с внутренними файлами):
cd jailkit-2.14
В пакете есть неболшой косячок с LSB-тэгами, поэтому можно их до сборки руками поправить:
vi extra/jailkit
#!/bin/shОсталось только запустить сборку. Во время прохождения инструкций, сборщик споткнется об отсутствие файла *orig*, но не беда. Жмем на Y и идем дальше:
#
### BEGIN INIT INFO
# Provides: jailkit
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network $time
# Should-Stop: $network $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop the jailkit syslog daemon
### END INIT INFO
#
Устанавливаем свежесобранный пакет:debuild -uc -us
dpkg -i ../jailkit_2.14-1_i386.debКонфигурирование находится под катом.
Создадим директорию, в которую будем чрутить наших пользователей:
Теперь нужно разобраться с утилитами. Первая утилита, которая нам повстречается - jk_init. Чтобы объяснить ее смысл, сначала надо рассказать как было плохо без нее. Раньше в chroot заводили пользователя одноименной командой. Ничего системного в такой директории как правило не было (если сама директория не какая-нибудь /etc или /lib). Пользователь, помещенный в чрут не может сделать почти ничего. И вот тут нам приходит на помощь jk_init. Ее задача пробросить основные библиотеки, системные файлы (как например /etc/resolv.conf) и утилиты (как например ls или cat) в ту самую директорию, куда зачрутили пользователя, чтобы ему хоть было с чем работать.mkdir /some/dir
Для начала откроем файл /etc/jailkit/jk_init.ini и посмотрим, что в нем. Файл разбит на комплекты пробрасываемых файлов, объединенных по целевым принципам. Например если пользователю надо иметь возможность примитивных действий с сетью (хотябы отрезолвить кого-то), то есть комплект [netbasics]. Если же ему кроме первого надо еще и rsync использовать, то кроме [netbasics] для него придется прокинуть комплект [rsync]. Причем [rsync], как видно в конфиге, включает в свои зависимости и [netbasics] и [uidbasics], а значит если мы скажем утилите jk_init включить [rsync], он включит все три автоматически.
Итак включим пользователю [rsync], [git] и [basicshell],
Создаем пользователя, устанавливаем ему пароль и добавляем его в группу users (всех пользователей этой группы мы будем заворачивать в наш чрут):jk_init -v /some/dir basicshell rsync git
groupadd usersТеперь в /etc/ssh/sshd_config, в самом низу пишем перенаправление всех пользователей из группы users в чрут:
useradd testuser
passwd testuser
usermod -a -G users testuser
Match Group usersПосле чего нужно перезапустить SSH:
ChrootDirectory /some/dir
AllowTCPForwarding no
service ssh restart
Готово, можно логиниться под любым пользователем, который состоит в группе users - например testuser.
Комментариев нет:
Отправить комментарий