Назад | Перейти на главную страницу

Включение ChrootDirectory нарушает мой SFTP на AWS, дает ошибку для неправильного каталога

Я пытаюсь настроить 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 их папку и предоставили ей правильные разрешения).