С выпуском OpenSSH 4.9p1 вам больше не нужно полагаться на сторонние хаки или сложные настройки chroot, чтобы ограничить пользователей своими домашними каталогами или предоставить им доступ к сервисам SFTP.
Отредактируйте / etc / ssh / sshd_config (/ etc / sshd_config в некоторых дистрибутивах) и установите следующие параметры:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Убедитесь, что директива «Match» находится в конце файла. Это говорит OpenSSH, что все пользователи в группе sftp должны быть привязаны к своему домашнему каталогу (который% h представляет в команде ChrootDirectory
Для всех пользователей, которых вы хотите использовать в chroot, добавьте их в группу sftp, используя:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
Приведенная выше команда usermod добавит пользователя joe в группу sftp и установит для его оболочки значение / bin / false, чтобы они абсолютно не могли получить доступ к оболочке. Команды chown и chmod устанавливают необходимые разрешения для каталога. С этими установленными разрешениями пользователю будет разрешено загружать и скачивать файлы, но он не сможет создавать каталоги или файлы в корневом каталоге.
Хронирование учетных записей оболочки немного сложнее, так как требует, чтобы определенные файлы устройств и оболочка были доступны в домашнем каталоге пользователя. Следующие команды создадут очень простую систему chroot в Mandriva Linux:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
С учетом вышесказанного пользователь joe может войти в ssh и будет ограничен chroot. К сожалению, это мало что дает, но дает представление о том, как это можно настроить. В зависимости от того, что вы хотите предоставить, вам нужно будет установить дополнительные библиотеки и двоичные файлы.
Создание chroot
Установите пакеты dchroot и debootstrap.
Как администратор (то есть с помощью sudo) создайте новый каталог для chroot. В этой процедуре /var/chroot
будет использоваться каталог . Для этого введите sudo mkdir /var/chroot
в командной строке.
Как администратор, откройте
/etc/schroot/schroot.conf
в текстовом редакторе. Типа cd /etc/schroot
, а затем gksu gedit schroot.conf
. Это позволит вам редактировать файл.
Добавьте следующие строки в, schroot.conf
а затем сохраните и закройте файл. Замените
your_username
на ваше имя пользователя.
[lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 users = your_username groups = sbuild root-groups = root
Откройте терминал и введите:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Это создаст базовую «установку» Ubuntu 10.04 (Lucid Lynx) в chroot. Для загрузки пакетов может потребоваться некоторое время. Примечание: вы можете заменить lucid версией Ubuntu по вашему выбору. Примечание. Вы должны изменить вышеуказанное mirror.url.com
с помощью URL-адреса действительного локального архивного зеркала. Основной chroot теперь должен быть создан. Введите, sudo chroot /var/chroot
чтобы перейти к корневой оболочке внутри chroot.
Настройка chroot
Есть несколько основных шагов, которые вы можете предпринять, чтобы настроить chroot, предоставляя такие средства, как разрешение DNS и доступ к ним /proc
.
Примечание: введите эти команды в оболочке, которая находится за пределами chroot.
Введите следующую команду, чтобы смонтировать /proc
файловую систему в chroot (необходим для управления процессами):
sudo mount -o bind /proc /var/chroot/proc
Введите следующее, чтобы разрешить DNS-разрешение изнутри chroot (требуется для доступа в Интернет):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Очень немногие пакеты установлены по умолчанию в chroot (даже sudo не установлен). Используйте apt-get install package_name
для установки пакетов.