Пользователь может настроить это самостоятельно без участия root, либо с клиента (для каждого подключения), либо с сервера (для открытого ключа).
С клиента мы можем переопределить удаленную командуиспользуется для обработки взаимодействия sftp с помощью опции -s
:
sftp -s 'umask 0777; env PATH=${PATH}:/usr/libexec/openssh:/usr/lib/ssh:/usr/sbin sftp-server' username@hostname
(Если ваш sftp-server
не установлен ни в одном из мест, указанных выше, добавьте это также в путь).
С сервера мы можем принудительно запускать определенную команду всякий раз, когда устанавливается соединение с использованием определенного открытого ключа.Это запустится для всех соединений, не только для SFTP, но мы можем проверить переменную окружения $SSH_ORIGINAL_COMMAND
, чтобы решить, какие действия предпринять.Добавление что-то вроде следующего к authorized_keys
, вероятно, достаточно для ваших нужд:
command="umask 0777; if [[ -n $SSH_ORIGINAL_COMMAND ]]; then eval $SSH_ORIGINAL_COMMAND; else exec bash --login; fi" ssh-rsa AAAAB3NzaC1yc2EA...
(замена любой вашей любимой оболочки для обработки любых интерактивных входов в систему, и отметьте, что если вы используете tcsh
,необходимо изменить это в соответствии с синтаксисом этой оболочки).