Você precisa de um shell para o SCP?

33

Estou permitindo a um amigo uma conta local na minha máquina, exclusivamente para o SCP. Posso especificar o shell de sua conta como /bin/true, ou de qualquer outra forma, limitar a conta, enquanto ainda permito o SCP?

Gilles 'SO- parar de ser mau'
fonte

Respostas:

39

Você pode definir o shell desse usuário para rssh ou scponly, que são projetados exatamente para esse fim:

rssh é um shell restrito para uso com o OpenSSH, permitindo apenas scp e / ou sftp. Agora também inclui suporte para rdist, rsync e cvs.

O scponly é um 'shell' (tipo) alternativo para administradores de sistema que desejam fornecer acesso a usuários remotos para ler e gravar arquivos locais sem fornecer privilégios de execução remota.

Quando você executa o scp, o daemon OpenSSH dispara um scpprocesso com a -fopção Quando você executa o sftp, o daemon OpenSSH dispara um sftp-serverprocesso. Em qualquer um dos casos, o subprocesso é executado através do shell do usuário, de modo que o shell deve suportar pelo menos esses comandos, com uma sintaxe semelhante a Bourne. Qualquer shell no estilo Bourne fará, assim como o csh (acho que suas regras de citação são compatíveis o suficiente para o que sshdusa). Rssh e scponly permitem esses comandos e nada mais. /bin/truenem sequer executaria esses comandos.

Gilles 'SO- parar de ser mau'
fonte
Então, isso significa que / bin / false ou / bin / true não funcionariam - ou apenas permitiriam o sftp?
Danny Staple
2
@DannyStaple Se o shell de um usuário estiver definido como /bin/falseou outro programa que não faz nada, nem o scp nem o sftp funcionarão. Para ambos os comandos, o daemon SSH dispara um comando shell que executa um processo de servidor dedicado ( scp -fou sftp-server). Ele precisa de um shell no estilo Bourne, ou pelo menos uma aproximação suficientemente próxima (como a rsshque permite apenas esses poucos comandos).
Gilles 'SO- stop be evil'