
Я использую 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) не может быть записан. Пользователь может перейти в папку fileshere и записать туда. Есть ли способ сделать папку fileshere исходным удаленным рабочим каталогом, как только пользователь зайдет в SFTP, как в примере ниже? Или я могу сделать папку chrooted доступной для записи?
Что я хочу:
$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere
Буду признателен за любую оказанную помощь.
решение1
Если chroot или internal-sftp не используются, пакет OpenSSH использует программу с именем sftp-server
для обработки входящих сеансов SFTP.документация для sftp-серверавыводит параметр командной строки для начального каталога:
-дstart_directory
указывает альтернативный начальный каталог для пользователей. Имя пути может содержать следующие токены, которые раскрываются во время выполнения: %% заменяется на литерал '%', %d заменяется на домашний каталог аутентифицируемого пользователя, а %u заменяется на имя пользователя этого пользователя. По умолчанию используется домашний каталог пользователя. Этот параметр полезен в сочетании с параметром sshd_config(5) ChrootDirectory.
Эта документация также применима к internal-sftp
подсистеме, поэтому вы также можете использовать эту опцию с ней. Обратите внимание, что вы должны указать начальный каталог относительно chroot, а не фактический root системы:
Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere