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.

itsadok
fonte

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/.

Tuminoide
fonte
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!
jatashankar shukla
fonte
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