Я пытаюсь настроить SFTP-сервер на AWS, который несколько клиентов могут использовать для безопасной загрузки данных. Важно, чтобы они не могли видеть данные других клиентов, и для этого мне нужно заблокировать каталоги с помощью ChrootDirectory в
В моем sshd_config есть следующее:
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home/chroot/ftptest/
AllowTcpForwarding no
ForceCommand internal-sftp
Если я закомментирую строку ChrootDirectory, все будет работать нормально, за исключением того, что вы можете увидеть все файлы в системе. Настроил все по инструкции Вот используя vsftpd. Я использую ключи ssh для управления доступом к каждой из учетных записей клиентов в соответствии с Инструкции Amazon. Я использую Amazon AMI.
Изменить: я изменил каталог chroot на / home / chroot / ftptest / и создал каталоги со следующими разрешениями:
ls -ld / /home /home/chroot /home/chroot/ftptest/
dr-xr-xr-x 25 root root 4096 Feb 23 03:28 /
drwxr-xr-x 6 root root 4096 Feb 23 20:26 /home
drwx--x--x 3 root root 4096 Feb 23 20:27 /home/chroot
drwxr-xr-x 2 ftptest ftptest 4096 Feb 23 20:27 /home/chroot/ftptest/
Это все еще не работает. В / var / log / secure я вижу
Authentication refused: bad ownership or modes for directory /home/ftptest
хотя / home / ftptest - это не каталог, в который я пытаюсь выполнить chroot. Почему для этого каталога возникает ошибка? Может ли это быть проблемой с каталогом ~ / .ssh?
каталог chroot должен принадлежать пользователю root. но затем вы можете создать папку внизу (например, файлы, загрузка) с разрешениями для вашего пользователя.
Раздел «Match Group» соответствует группе учетных записей UNIX пользователей, поэтому, если ftptest не входит в группу sftponly или не существует, добавьте его:
# groupadd sftponly
# usermod -a -G sftponly ftptest
Это должно заставить его работать, проблема в том, что если вы добавите кого-то еще в эту группу, все они получат одну и ту же папку, поэтому, если вы хотите, чтобы один пользователь получил chroot'd, простой способ - сделать что-то вроде
Match User ftptest
ChrootDirectory /home/chroot/ftptest
ForceCommand internal-sftp
AllowTcpForwarding no
Теперь ftptest подключается и получает свою папку. Если у вас много пользователей, добавьте их в группу sftponly и используйте эту конфигурацию:
Match group sftponly
ChrootDirectory /home/chroot/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Это даст всем им свои собственные изолированные папки (убедитесь, что вы mkdir их папку и предоставили ей правильные разрешения).