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

Установить начальный удаленный рабочий каталог в SFTP

Я использую 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