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

cd на стороне сервера при подключении клиента sftp

Есть ли способ с помощью sftp настроить его на стороне сервера для запуска команды cd при подключении клиента?

У меня есть мои пользователи, добавленные в chroot, папка должна быть root: root chowned и не может быть доступна для записи другим пользователям, в chroot есть подпапки, принадлежащие пользователям sftp.

Что я хотел бы сделать, так это записать пользователей в свои папки со стороны сервера в тюрьме при их подключении, чтобы избежать раздражения, связанного с необходимостью делать это каждый раз при подключении. Это возможно?

OpenSSH использует программу под названием sftp-server для обработки сеансов SFTP на стороне сервера. Sftp-server принимает вариант -d чтобы указать начальный каталог пользователя в качестве альтернативы его домашнему каталогу. Видеть страница руководства по sftp-серверу.

Если вы используете типичный Настройка SFTP chroot jail, вероятно, в вашем sshd_config есть строка:

ForceCommand internal-sftp

Это вызывает sshd для запуска копии кода sftp-сервера, встроенного в программу sshd. Вы можете добавить в эту строку аргументы командной строки, как и для автономной программы sftp-server. Так, например:

Match User jdoe
    ChrootDirectory /var/jdoe-root
    ForceCommand internal-sftp -d /jdoe-homedir

Когда "jdoe" входит в систему, он будет привязан к /var/jdoe-root, а его начальный каталог для сеанса будет /var/jdoe-root/jdoe-homedir.

Протокол / сеанс SFTP не зависит от состояния. Нет концепции рабочего каталога с SFTP, в отличие от оболочки или FTP. Любая иллюзия рабочего каталога моделируется клиентом SFTP.

Таким образом, вы не можете применить это на стороне сервера.

Обратите внимание, как там CWD команда в протоколе FTP (используется в фоновом режиме cd команда типичного FTP-клиента), но ничего подобного в протоколе SFTP (на самом деле имеется в виду протокол, а не cd в типичном клиенте SFTP).