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

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

Estou logado com uma conta de usuário normal que não é membro dos grupossudoeadministrador. Quando executo o seguinte comando de exemplo.

su -c 'sudo some_command_that_needs_sudo' sudo-user

..é necessário digitar a senhaduas vezes. A primeira vez para fazer login comousuário sudoe a segunda vez porque solicitamos privilégios de root usandosudo.

Você sabe como evitar digitar a senha uma segunda vez?

Por favor considerem..

  • ..não quero alterar nenhum privilégio de usuário
  • ..deseja inserir a senha apenas uma vez
  • ..procurando um comando simples e único

Responder1

Sua configuração está um pouco anormal. Normalmente você adicionaria seu nome de usuário aos 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 é para se tornar o usuário sudo. Você não pode evitar isso - você está trocando de usuário. Aqui estão algumas soluções malucas que vêm à mente e que você não deve usar.

  • Você poderia definir uma senha vazia para o usuário para simplificar o login, mas isso seria um problema.insanorisco de segurança. Não faça isso.
  • Você pode automatizar o login com expectuma senha codificada. Isso não é mais seguro do que a sugestão anterior. Não faça isso.
  • Você poderia usar ssh. Você criaria uma chave ssh como o usuário sudo, copiaria-a para o diretório .ssh do seu usuário, concederia permissão ao seu usuário, anexaria-a ao .ssh/authorized_keys do sudouser e usaria: 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 visudoe definindo o sudouser como NOPASSWD. Esta é uma operação mais comum. Você pode até limitar os comandos que não exigem senha, o que é obviamente recomendado se você pretende executar apenas alguns comandos dessa maneira. Observe, entretanto, que, a menos que esse usuário sudo seja tratado com muita seriedade, ter uma política NOPASSWD não é uma boa ideia. De um modo geral, não é uma boa ideia de qualquer maneira.

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

sudouser ALL= NOPASSWD: ALL

Resumindo: não vejo por que você está usando essa configuração de três contas. Deixar isso de lado, em termos de fornecer o que você pediu, permitir que o usuário sudo execute determinados comandos sem ser solicitada uma senha é o caminho mais sensato.

Você precisa ter cuidado - isso cria uma configuração menos segura.

Além disso, é tecnicamente possível obter uma solução de autenticação zero dentro de suas diretrizes, usando autenticação baseada em chave ssh e NOPASSWD para o usuário sudo, para que seus comandos fiquem assim:

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

Obviamente, isso está muito além de inseguro – é simplesmente aberto. Eu não deveria precisar dizer isso, mas não faça isso.

informação relacionada