Procurando por uma solução melhor para executar um único comando sudo ao usar uma conta de usuário normal?

3

Estou logado com uma conta de usuário normal que não é membro dos grupos sudo e admin . Quando eu executo o seguinte exemplo de comando ..

su -c 'sudo some_command_that_needs_sudo' sudo-user

.. é necessário digitar a senha duas vezes . A primeira vez que logar como sudo-user e a segunda vez porque solicitamos privilégios de root usando sudo .

Você sabe como evitar a digitação da senha uma segunda vez?

Por favor, tenha em mente ..

  • .. não deseja alterar nenhum privilégio de usuário
  • .. deseja digitar a senha apenas uma vez
  • .. procurando por um único comando simples
por eldiamo 24.03.2013 / 01:48

1 resposta

2

Sua configuração é um pouco anormal. Normalmente, você adicionaria seu nome de usuário a sudoers e limitaria os aplicativos que podem ser executados dessa maneira, se necessário. Sem saber mais detalhes, não vejo nenhum benefício em introduzir uma terceira conta. Apenas introduz mais indireção, que é o que você está encontrando agora.

A primeira senha que você digita é se tornar o sudo-user. Você não pode evitar isso - você está trocando de usuários. Aqui estão algumas soluções malucas que você não deve usar.

  • Você pode definir uma senha vazia para o usuário simplificar o login, mas isso seria um risco de segurança insano . Não faça isso.
  • Você pode automatizar o login com expect e uma senha codificada. Isso não é mais seguro do que a sugestão anterior. Não faça isso.
  • Você poderia usar o ssh. Você criaria uma chave ssh como sudo-user, copia-a para o diretório .ssh do seu usuário, permite-a para seu usuário, anexa-a ao arquivo .ssh / authorized_keys do sudoso e usa: ssh -i .ssh/sudouser_id_rsa sudouser@localhost <command> . Pode funcionar, mas é uma loucura.

A segunda senha pode ser facilmente removida editando o arquivo sudoers com visudo e definindo o sudouser como NOPASSWD. Esta é uma operação mais comum. Você pode até mesmo limitar os comandos que não exigem uma senha, o que é obviamente recomendado se você pretende executar apenas alguns comandos dessa maneira. Note, no entanto, que a menos que este usuário do sudo seja tratado muito seriamente, ter uma política NOPASSWD não é uma boa idéia. De um modo geral, não é uma boa ideia, independentemente.

Uma configuração que pode executar todos os comandos sem um prompt de senha seria semelhante a:

sudouser ALL= NOPASSWD: ALL

Conclusão: não vejo por que você está usando essa configuração de três contas. Definir isso para um lado, em termos de dar a você o que você pediu, permitindo que o usuário sudo execute certos comandos sem ser solicitado por uma senha é a rota mais sensata.

Você precisa ser cuidadoso - isso cria uma configuração menos segura.

Como um aparte, é tecnicamente possível obter uma solução de autenticação zero em suas diretrizes, usando a autenticação baseada em chave ssh e NOPASSWD para o usuário sudo, para que seus comandos fiquem parecidos com:

ssh -i .ssh/sudouser_id_rsa sudouser@localhost sudo whatever_i_like

Isso é obviamente muito além da insegurança - isso é simplesmente aberto. Eu não deveria precisar dizer isso, mas não faça isso.

    
por IlluminAce 24.03.2013 / 03:06