¿Cómo el ubuntuusuario en las imágenes de AWS para Ubuntu Server 12.04 tiene sin contraseña sudopara todos los comandos cuando no hay configuración para ello /etc/sudoers?
Estoy usando el servidor Ubuntu 12.04 en Amazon. Quiero agregar un nuevo usuario que tenga el mismo comportamiento que el usuario predeterminado de Ubuntu. Específicamente quiero sin contraseña sudopara este nuevo usuario.
Así que agregué un nuevo usuario y fui a editar /etc/sudoers(usando visudo, por supuesto). Al leer ese archivo, parecía que el ubuntuusuario predeterminado estaba sin contraseña sudopor ser miembro del admingrupo. Así que agregué mi nuevo usuario a eso. Lo que no funcionó. Luego intenté agregar la NOPASSWDdirectiva a sudoers. Lo que tampoco funcionó.
De todos modos, ahora solo tengo curiosidad. ¿Cómo ubuntuobtiene el usuario privilegios sin contraseña si no están definidos /etc/sudoers? ¿Cuál es el mecanismo que permite esto?

Respuestas:
Bien, he descubierto la respuesta, así que también podría ponerla aquí para completarla. Al final
/etc/sudoershay lo que pensé que era solo un comentario:Sin embargo, esto realmente incluye el contenido de ese directorio. En cuyo interior está el archivo
/etc/sudoers.d/90-cloudimg-ubuntu. Que tiene los contenidos esperadosAsí que ahí es donde vive la configuración de sudo para el usuario predeterminado de ubuntu.
Debería editar este archivo usando visudo. El siguiente comando le permitirá editar el archivo correcto con visudo.
Y agregue una línea como:
Al final.
fuente
/etc/sudoers.d/90-cloud-init-users(para editar ..sudo visudo -f /etc/sudoers.d/90-cloud-init-users). Aunque sería más limpio crear archivos adicionales que editar el generado. Tenga en cuenta que los archivos que contiene una.o termine en~lo no ser incluidos.Descubrí que lo más sencillo, para replicar fácilmente este comportamiento en varios servidores, era lo siguiente:
Cambia esta línea:
a esta línea:
Y muévelo debajo de esta línea:
ahora deberías tener esto:
entonces para cada usuario que necesita acceso sudo CON una contraseña :
y para cada usuario que necesita acceso a sudo SIN contraseña :
y finalmente, ejecuta esto:
¡Y eso es!
Editar: es posible que deba agregar el grupo de administración, ya que no creo que exista de manera predeterminada.
También puede agregar el
ubuntuusuario de AWS predeterminado aladmingrupo mediante este comando:Nota: Como mencionó @hata , es posible que deba usarlo
admcomo nombre de su grupo de administración, dependiendo de la versión de Ubuntu que se esté usando.fuente
Crearía mi propio archivo en el directorio /etc/sudoers.d/; el archivo creado por Amazon Cloud podría sobrescribirse en caso de cualquier actualización. Después de crear su archivo en /etc/sudoers.d, agregue esta entrada,
Reinicie el sistema y esto funcionará.
fuente
Respuesta corta sin usar ningún editor (probado en bash, muy arriesgado de ejecutar en hosts remotos).
Configure sudo para que funcione sin una contraseña para el usuario actual:
Verifique la edición con:
Verifique si puede usar sudo sin una contraseña:
... o simplemente pruébalo con:
fuente
echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoersvisudoes particularmente agradable al no permitirle romper el archivo sudoers, por lo tanto, no bloquearlo de su máquina (o al menos sudo).visudo, pero generalmente no por accidente, ya quevisudosolo guarda los cambios que están bien formados de acuerdo con la gramática de los archivos sudoers . La mayoría de los errores son sintácticamente incorrectos, por lo que no causan dañovisudo. Si/etc/sudoersun archivo/etc/sudoers.destá mal formado, sesudoniega a elevar los privilegios para cualquier persona como medida de seguridad, por lo que no usarlovisudoes peligroso. (Aunque a vecespkexecpuede solucionarlo sin reiniciar).Así es como he implementado el usuario no root, sin contraseña en una imagen efímera de Docker para usar en una tubería CICD:
fuente