¿Cómo el ubuntu
usuario en las imágenes de AWS para Ubuntu Server 12.04 tiene sin contraseña sudo
para 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 sudo
para 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 ubuntu
usuario predeterminado estaba sin contraseña sudo
por ser miembro del admin
grupo. Así que agregué mi nuevo usuario a eso. Lo que no funcionó. Luego intenté agregar la NOPASSWD
directiva a sudoers
. Lo que tampoco funcionó.
De todos modos, ahora solo tengo curiosidad. ¿Cómo ubuntu
obtiene 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/sudoers
hay 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
ubuntu
usuario de AWS predeterminado aladmin
grupo mediante este comando:Nota: Como mencionó @hata , es posible que deba usarlo
adm
como 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/sudoers
visudo
es 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 quevisudo
solo 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/sudoers
un archivo/etc/sudoers.d
está mal formado, sesudo
niega a elevar los privilegios para cualquier persona como medida de seguridad, por lo que no usarlovisudo
es peligroso. (Aunque a vecespkexec
puede 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