No mundo bash, os arquivos init de perfil geralmente chamam arquivos init do rc, conforme explicado em este post StackOverflow . Portanto, os arquivos init do rc não estão vinculados a shells somente interativos.
No meu conhecimento, o protocolo SFTP é um uso não interativo do shell SSH para executar um programa sftp-server que interage com o responsável pela chamada por meio de seus fluxos stdin
e stdout
. Sobre o seu problema, acho que uma das duas coisas indesejadas acontece:
-
O comando
-
sudo
solicita uma senha, que é inesperada pelo cliente sftp, que espera uma interação binária com seu colega sftp-server -
O usuário root não tem acesso ao binário chamado pela camada sftp (por causa das configurações de permissão - mas eu acho que esse é o caso do sudo)
Você deve ter duas maneiras de solucionar isso:
-
restrinja o seu auto-switch de raiz para shells interativos apenas como Martin sugere, por exemplo usando tty comando:
if tty --silent then /usr/bin/sudo /bin/bash fi
-
ou crie / modifique seu perfil .bashprofile privado para não chamar seu arquivo rc dele (ainda definindo seu PATH pelo menos).