Я хочу настроить общедоступный сервер хранения, который позволяет sftp
и rsync
(через ssh). Я работаю с chroot
тюрьма и rssh
. Когда пользователь подключается к серверу с sftp
он может читать все файлы в chroot jail (например, / lib и / bin) в chroot
. Аналогично с rsync
(rsync --list-only user@server:/
). Я хотел бы иметь настройку, в которой пользователь может только просматривать и не выходить из своего домашнего каталога.
Дополнительным требованием является то, что я не хочу настраивать среду chroot для каждого пользователя.
Я уже пробовал операторы chrootdirectory и forcecommand в sshd_config
который отлично работает для sftp
но не позволяет rsync
.
для части sftp вы можете посмотреть директивы Подсистема sftp internal-sftp вместе с ChrootDirectory в файле sshd_config.
Вы пытались настроить команды на принятых ключах, как предложено в Попытка настроить chroot'd rsync ?
Отрывок:
Предоставление доступа ssh не обязательно подразумевает полный доступ к оболочке, например, здесь показано, как использовать файл ssh authorized_keys, чтобы разрешить резервное копирование через rsync, ограничивая доступные команды только приемником rsync.
Примерно так в вашем файле authorized_keys:
command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1 command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2
Также есть указатели на две статьи в блоге. Первый объясняет, как ограничить ssh до rsync:
Второе, что вам не нужно, это настройка среды chroot.
Лично я бы пошел на chroot и настройку $USER/{bin|lib}
как привязные крепления. Таким образом, я бы поддерживал единую среду chroot, установленную на chroot каждого пользователя.