Есть ли способ с помощью 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).