Habilite sudo sin contraseña como usuario específico

26

Tengo dos usuarios en mi sistema: itsadokmi usuario principal y elasticsearchun usuario con un ulimit diferente para ejecutar ElasticSearch.

Me gustaría poder ejecutar cosas como usuario secundario sin que se me solicite una contraseña cada vez.

Agregué la siguiente línea a /etc/sudoers:

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

Según tengo entendido, esto debería permitir al usuario itsadok, en cualquier host, ejecutar cualquier comando como elasticsearch (usuario o grupo) sin una contraseña. Sin embargo, intentar algo como

itsadok@dev001$ sudo -u elasticsearch ls

me pide una contraseña Reiniciar la máquina no ayudó.

¿Qué estoy haciendo mal?

ACTUALIZACIÓN :

Resulta que el orden de las líneas sudoerses significativo. Coloqué la línea debajo de "Especificación de privilegios de usuario", que sonaba como el lugar correcto, pero la línea para el %admingrupo que viene más tarde estaba anulando la configuración.

Poner la misma línea al final del archivo sudoers solucionó el problema.

itsadok
fuente

Respuestas:

12

Respuesta revisada de los comentarios: si coloca las directivas a continuación #includedir, se ignoran. Mover la línea al lado de los sudoo admingrupos definiciones, o colocarlo en archivo separado en /etc/sudoers.d/.

Tuminoide
fuente
No funcionó Además, el archivo ya tenía un root ALL=(ALL:ALL) ALLsin espacios alrededor del colon, por lo que no parece correcto. Solo para estar seguro, lo intenté solo (elasticsearch). No funciona
itsadok
Tienes razón, funciona sin espacios en blanco en 12.10 al menos. ¿Qué Ubuntu estás usando y exactamente dónde sudoerscolocas esta línea? Tengo un leve recuerdo de que si en sistemas más antiguos colocaste la línea después del primero #includedir, se ignoraba. Si está al final del archivo, intente insertarlo sobre el archivo incluido.
Tuminoide
1
Su comentario me puso en el camino correcto: el orden de las entradas es importante. Las configuraciones posteriores anulan las configuraciones anteriores.
itsadok
16

Sigue estos pasos:

  1. Edite el archivo sudoers (puede estar presente en /etc/sudoers.d/file_name)
sudo visudo -f /etc/sudoers
  1. Agregar línea al final del archivo
usernameusedforlogin ALL=(ALL) NOPASSWD:ALL
  1. Guardar el archivo
esc :wq!
jatashankar shukla
fuente
Esto permite al usuario ejecutar todos los comandos en todos los hosts sin contraseñas como cualquier usuario, pero no otorga ningún privilegio de grupo, que era parte de la pregunta original. En general, este es un mal consejo ya que le está dando al usuario privilegios muy amplios.
d4nyll