Пользователь chroot не запускается в своем домашнем каталоге и не загружает свои bash_profiles

Пользователь chroot не запускается в своем домашнем каталоге и не загружает свои bash_profiles

Если пользователь войдет в систему, он запустится в / chroot (который на реальной машине - /var/jail). Я бы хотел, чтобы он запустился в своем домашнем каталоге. Кроме того, он, похоже, не загружает ни один из своих файлов профиля (.bash.rc и т. д.). Я следовалэтотучебник по созданию chroot-окружения. Вот как выглядит мой /etc/passwd:

test:x:1004:1008:,,,:/var/jail/home/test:/bin/bash

Вот как выглядит мой файл /var/jail/etc/passwd:

test:x:1004:1008:,,,:/home/test:/bin/bash

Я также обнаружил, что если я удалю

Match User test
    ChrootDirectory /var/jail
    AllowTCPForwarding no
    X11Forwarding no

из моего /etc/ssh/sshd_config пользователь запускается в своей правильной домашней папке и с загруженными настройками bash. Однако он может покинуть chroot-среду, если я удалю эту часть.Этотвопрос, который я задал ранее, несколько связан, так как я думаю, что неправильный вид командной строки вызван не загруженными файлами профиля. Так что есть идеи, как это исправить?

решение1

Ваша конфигурация верна, за исключением небольшой детали: домашний каталог /etc/passwdне должен содержать часть пути chroot. Измените ее на:

test:x:1004:1008:,,,:/home/test:/bin/bash

перезагрузите компьютер sshdи попробуйте снова.

От man sshd_config:

ChrootDirectory

Указывает путь к каталогу для chroot(2) после аутентификации. Все компоненты пути должны быть каталогами, принадлежащими root, которые не могут быть записаны никаким другим пользователем или группой. После chroot sshd(8) изменяет рабочий каталог на домашний каталог пользователя.

То есть сначала sshdвыполняется chroot(в нашем случае chroot /var/jail), а затем sshdизменяется каталог на домашний каталог пользователя (в нашем случае cd /home/test- в chroot-среде cd /var/jail/home/testне сработает).

Если вы используете Debian/Ubuntu (поскольку упомянутое вами руководство предназначено для Debian), вы можете создать файл с именем /var/jail/etc/debian_chrootи содержимым «chroot», он будет отображаться в приглашении пользователя в скобках следующим образом: (chroot)test@servername:~$.

(Я продублировал вашу конфигурацию на моем Ubuntu 12.04, и она заработала после удаления /var/jailиз пользовательской записи test в /etc/passwd.)

Связанный контент