Переместить пользователя Sftp в подкаталог его тюрьмы
У меня вопрос по поводу джейла, объяснил позже:
- Пользователь должен быть заключен в тюрьму:
foo
- Каталог тюрем:
/mnt/foo-jail
- Домашний каталог foo:
/mnt/foo-jail/foo-home
Все отлично. Jail работает, и пользователь подключается правильно.
- Проблема в том, что "foo" не имеет разрешения на запись в своем каталоге Jail, но у него есть разрешение на запись в его домашнем каталоге. Когда он подключается к моему серверу, он перенаправляется в /mnt/foo-jail (его Jail), а не в своем доме (/mnt/foo-jail/foo-home), где он может писать;
Как я могу решить эту проблему? Он не может заставить CHDIR перемещаться между папками, но он должен быть перенаправлен на свой собственный домашний каталог.
Большое спасибо за вашу помощь!!!
Изменить: Решено
Я напишу интересную часть конфигурационного файла ssh sshd_config, надеясь, что он кому-нибудь пригодится.
Match user foo
ChrootDirectory /mnt/foo-jail/
ForceCommand internal-sftp
AllowTCPForwarding no
AuthorizedKeysFile /mnt/foo-jail/%h/.ssh/authorized_keys
X11Forwarding no
В файле / etc / passwd foo выглядит так:
foo:x:1001:1001:Foo User,,,:/foo-home:/bin/bash
Обратите внимание на дом, который является / foo-home, а не / foo-home /, иначе ssh не сможет перехватить правильный путь ключа.
2 ответа
ChrootDirectory / upload /% u
ForceCommand internal-sftp -d data
Это поместит sftp в каталог /upload/UserXX/data. Каталог данных принадлежит и доступен для чтения / записи UserXX
Попробуй добавить
ChrootDirectory %h
в /etc/ssh/sshd_config
в Match Group
раздел. %h
заменяется домашним каталогом подключающегося пользователя.