Configurando o usuário para baixar arquivos sem acesso ao shell

1

Eu criei um usuário e configurei seu shell para /usr/sbin/nologin . Como esperado, uma conexão PuTTY é fechada imediatamente após a conexão. Ao tentar fazer com que o WinSCP se conecte com o protocolo SFTP, ele diz que a conexão foi recusada e pergunta se um servidor SFTP está sendo executado. Usar o protocolo SCP sem surpresa também não funciona.

Eu instalei o RSSH e configurei o shell do usuário para /usr/bin/rssh e obtive exatamente o mesmo resultado. O PuTTY abandonou a conexão imediatamente, o SFTP perguntou se o servidor SFTP estava sendo executado e o SCP não funcionava.

Eu configurei o shell do usuário para /bin/bash e tanto o SFTP quanto o SCP funcionaram bem, assim como com meu usuário principal.

O que estou fazendo de errado? Como posso definir o usuário para que ele possa baixar arquivos do servidor, mas não tenha acesso ao shell?

Obrigado.

    
por Ozzah 24.10.2014 / 08:56

1 resposta

2

Em man sshd_config :

ForceCommand
         Forces the execution of the command specified by ForceCommand,
         ignoring any command supplied by the client and ~/.ssh/rc if
         present.               ...           Specifying a command
         of “internal-sftp” will force the use of an in-process sftp
         server that requires no support files when used with
         ChrootDirectory.

Então, edite seu /etc/ssh/sshd_config e adicione algo assim:

Match User username
    ForceCommand internal-sftp

Use Match para que somente os usuários / grupos necessários sejam afetados.

A descrição completa de ForceCommand diz:

             ...    The command is invoked by using the user's login shell
         with the -c option.  This applies to shell, command, or subsystem
         execution. 

No entanto, como internal-sftp está em processo, isso funcionará mesmo se /usr/bin/nologin ou /bin/false forem usados como o shell de login.

    
por muru 24.10.2014 / 09:02