Um comando pode ser executado sobre ssh com um usuário nologin?


13

Se um usuário tiver loginShell=/sbin/nologin, ainda é possível

ssh user@machine [command]

supondo que o usuário tenha chaves ssh apropriadas em seu diretório pessoal que possam ser usadas para autenticar?

Meu objetivo é manter o usuário como um nologin, mas ainda capaz de executar comandos em algumas outras máquinas na rede (semelhante ao uso por meio de 'sudo -u'), e estou me perguntando se esse é um curso razoável.


1
Deveria funcionar. O commandé executado em vez do shell de logon.
orion

1
Isso anula o propósito de configurar /sbin/nologincomo um shell. Se sua preocupação for a segurança da conta, desabilitar a autenticação de senha e usar chaves ssh é suficiente.
Creek

@ Creek, há uma diferença entre os shells de login e outras instâncias do shell. Então, o que ele está pedindo não derrota necessariamente o propósito de / sbin / nologin. Pode ser que ele queira executar algum trabalho fora do contexto de um shell de login.
22615 Michael Martinez

7
@orion Errado. O comando é executado pelo shell de login.
Gilles 'SO- stop be evil'

@MichaelMartinez no contexto de seu exemplo, se o shell do usuário for /sbin/nologin, o usuário não poderá efetuar login ou executar comandos na máquina. os cronjobs podem ser executados como usuário e sftppodem ser configurados para abrir sessões, mas a abertura de um shell via ssh não acontecerá #
Creek

Respostas:


17

Definir /sbin/nologincomo o shell do usuário (ou /bin/falseou /bin/true, que é quase equivalente ) proíbe o usuário de efetuar login para executar qualquer comando. O SSH sempre chama o shell de logon do usuário para executar comandos, portanto, você precisa definir o shell de logon como um que seja capaz de executar alguns comandos.

Existem vários shells restritos que permitem aos usuários executar apenas alguns comandos. Por exemplo rssh e scponly são ambos tais conchas que permitem ao usuário para executar alguns comandos pré-definidos (tais como scp, sftp-server, rsync, ...). Veja também Restringir o acesso do usuário no linux e Você precisa de um shell para o SCP?


Obrigado, acabei me demitindo para fornecer à conta um shell de login para que ele pudesse executar os comandos remotos. A melhor solução provavelmente seria o ssh como usuário atual e chamará sudo -u para o comando ssh, mas isso não é totalmente aplicável no meu caso.
Centimane

1

Parece que a resposta é não.

ssh user@machine [command]

com as teclas ssh no lugar, resulta apenas em:

This account is currently not available

em vez de executar o comando, parece que vou ter que dar acesso ao bash.


-4

Não sei se isso é possível (embora deva ser fácil de testar), mas há um recurso que provavelmente responde à sua pergunta de uma certa maneira e, em qualquer caso, resolve o seu problema.

Você pode adicionar um comando à linha da chave authorized_keys. Nesse caso, este comando é executado, nada mais. Suponho que isso funcione, /sbin/nologinpois o shell deve ser ignorado de qualquer maneira.

Mas você precisaria de uma chave diferente para cada comando que você permitir.


Infelizmente, a I necessidade solução teria que ser mais flexível do que isso
Centimane

se for fácil testar, você deve testá-lo antes de escrever uma resposta.
Michael Martinez

@MichaelMartinez É tarefa do interlocutor fazer testes fáceis antes de perguntar. Não é difícil perceber que não respondeu à pergunta, mas fez uma proposta para o problema que a causou. O que é perfeitamente adequado como resposta. Voto negativo é simplesmente estúpido. Você teria criticado a resposta sem o primeiro parágrafo? Exatamente.
Hauke ​​Laging

3
O comando in authorized_keysé executado pelo shell de login; portanto, não, isso não funciona (não sem a configuração não trivial adicional). (Como voto negativo é “estúpido” por uma resposta errada? Por favor, respeite os outros .)
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.