Я использую Amazon Linux AMI (производное от Red Hat) и создаю новый SFTP-сервер с помощью OpenSSH. Я хотел бы, чтобы пользователь SFTP был ограничен каталогом и имел возможность писать в исходный каталог, который отображается их клиентом SFTP.
Я использую ChrootDirectory для chroot пользователя в /home/customers/srgcompany
. Это означает, что этот каталог должен принадлежать пользователю root и быть доступным для записи только пользователю root. Запись пароля пользователя выглядит так: fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin
. Я поместил открытый ключ пользователя в /home/fflintstone/.ssh/authorized_keys
. Я создал папку, в которой группа пользователя (srgcompany
) имеет разрешение на чтение / запись / выполнение / sgid на /home/customers/srgcompany/fileshere
. Я настроил SFTP OpenSSH с Subsystem sftp internal-sftp -u 0007 -l INFO
.
Итак, прямо сейчас, когда пользователь использует SFTP-клиент для подключения, каталог, который отображается (и возвращается командой pwd), не может быть записан. Пользователь может cd в папку fileshere и писать туда. Есть ли способ сделать эту папку fileshere исходным удаленным рабочим каталогом, как только пользователь SFTP войдет, как в примере ниже? Или я могу сделать chrooted папку доступной для записи?
Что я хочу:
$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere
Любая помощь очень ценится.
Когда не используются chroot или internal-sftp, пакет OpenSSH использует программу с именем sftp-server
для обработки входящих сеансов SFTP. В документация для sftp-сервера перечисляет параметр командной строки для начального каталога:
-d start_directory
указывает альтернативный начальный каталог для пользователей. Имя пути может содержать следующие токены, которые раскрываются во время выполнения: %% заменяется буквальным "%",% d заменяется домашним каталогом аутентифицируемого пользователя, а% u заменяется именем пользователя этого пользователя. По умолчанию используется домашний каталог пользователя. Эта опция полезна в сочетании с опцией ChrootDirectory sshd_config (5).
Эта документация также применима к internal-sftp
подсистема, поэтому вы также можете использовать эту опцию с этим. Обратите внимание, что вы должны указать начальный каталог относительно chroot, а не фактического корня системы:
Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere