Você pode definir o shell desse usuário como rssh
ou scponly
, que são projetados precisamente para essa finalidade:
rssh is a restricted shell for use with OpenSSH, allowing only scp and/or sftp. It now also includes support for rdist, rsync, and cvs.
scponly is an alternative 'shell' (of sorts) for system administrators who would like to provide access to remote users to both read and write local files without providing any remote execution priviledges.
Quando você executa o scp, o daemon do OpenSSH dispara um processo scp
com a opção -f
. Quando você executa o sftp, o daemon do OpenSSH dispara um processo sftp-server
. Em ambos os 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 do estilo Bourne serve, assim como o csh (acho que suas regras de cotação são compatíveis o suficiente para o que o sshd
usa). Rssh e scponly permitem esses comandos e nada mais. /bin/true
nem executaria esses comandos.