Habilitar sudo sem senha como um usuário específico


26

Tenho dois usuários no meu sistema: itsadokmeu principal e elasticsearchum usuário com um ulimit diferente para executar o ElasticSearch.

Eu gostaria de poder executar coisas como o usuário secundário sem ser solicitada senha sempre.

Eu adicionei a seguinte linha a /etc/sudoers:

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

Pelo que entendi, isso deve permitir que o usuário itsadok, em qualquer host, execute qualquer comando como busca elástica (usuário ou grupo) sem uma senha. No entanto, tentar algo como

itsadok@dev001$ sudo -u elasticsearch ls

solicita uma senha. Reiniciar a máquina não ajudou.

O que estou fazendo errado?

ATUALIZAÇÃO :

Acontece que a ordem das linhas sudoersé significativa. Coloquei a linha em "Especificação de privilégios de usuário", que parecia o lugar certo, mas a linha do %admingrupo que vem depois substitui a configuração.

Colocar a mesma linha no final do arquivo sudoers corrigiu o problema.

Respostas:


12

Resposta revisada dos comentários: se você colocar as diretivas abaixo #includedir, elas serão ignoradas. Mova a linha ao lado das definições de sudoou admingrupo ou coloque-a em um arquivo separado /etc/sudoers.d/.


Não funcionou. Além disso, o arquivo já tinha um root ALL=(ALL:ALL) ALLsem espaços ao redor dos dois pontos, por isso não parece certo. Só por segurança, tentei apenas (elasticsearch). Não funciona
— itsadok

Você está correto, ele funciona sem espaço em branco no 12.10, pelo menos. Qual Ubuntu você está usando e exatamente onde sudoersvocê coloca essa linha? Tenho uma lembrança fraca de que, se nos sistemas mais antigos você colocou a linha depois da primeira #includedir, ela foi ignorada. Se estiver no final do arquivo, tente inseri-lo acima do arquivo incluído.
— Tuminoid

1
Seu comentário me colocou no caminho certo: a ordem das entradas é importante. As configurações posteriores substituem as anteriores.
— itsadok

16

Siga esses passos:

  1. Editar arquivo sudoers (pode estar presente em /etc/sudoers.d/file_name)
sudo visudo -f /etc/sudoers
  1. Adicionar linha no final do arquivo
usernameusedforlogin ALL=(ALL) NOPASSWD:ALL
  1. Salvar Arquivo
esc :wq!

Isso permite que o usuário execute todos os comandos em todos os hosts sem senhas como qualquer usuário, mas não concede privilégios de grupo, o que fazia parte da pergunta original. Geralmente, esse é um mau conselho, pois você concede privilégios muito amplos ao usuário.
— d4nyll 18/06
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.