186 votos

¿Cómo configurar `sudo` sin contraseña en Linux?

¿Cómo puede el sistema sin contraseña sudo ¿se puede configurar en distribuciones RHEL (Fedora, CentOS, etc.) o Ubuntu? (Si es el mismo en todas las distribuciones, mejor aún).

Entorno: equipo personal y/o de laboratorio/formación sin preocupación por el acceso no autorizado (es decir, los dispositivos están en redes no públicas, y cualquier/todos los usuarios son de plena confianza, y el contenido de los dispositivos es "plain-vanilla").

2 votos

La respuesta de @Richipal es la que mejor funciona con menos esfuerzo: parece que las reglas de sudoers se aplican en orden inverso.

3 votos

Las reglas de @a1an se aplican en el mismo orden que aparecen en el archivo sudoers, y a medida que se aplican se anulan unas a otras. Por lo tanto, si no quiero que una regla cambie en absoluto, la pondría hacia el final del archivo para que se aplique al final y no pueda ser anulada.

201voto

mcqwerty Puntos 2106

EDITAR gracias al comentario de medina: Según la página man, deberías poder escribir

ALL            ALL = (ALL) NOPASSWD: ALL

para permitir a todos los usuarios ejecutar todos los comandos sin contraseña.


Como referencia, dejo mi respuesta anterior:

Si añade una línea de la forma

%wheel         ALL = (ALL) NOPASSWD: ALL

a /etc/sudoers (utilizando el visudo por supuesto), permitirá a todos los miembros del grupo wheel ejecutar cualquier comando sin proporcionar una contraseña. Así que creo que la mejor solución es poner a todos tus usuarios en algún grupo y poner una línea así en sudoers - obviamente debe reemplazar wheel con el grupo real que utiliza.

Como alternativa, puede definir un alias de usuario,

User_Alias     EVERYONE = user1, user2, user3, ...

y usar eso:

EVERYONE       ALL = (ALL) NOPASSWD: ALL

aunque habría que actualizar /etc/sudoers cada vez que añada o elimine un usuario.

2 votos

No lo hace ALL trabajo en lugar de * para especificar todos los usuarios? Vea el ejemplo en sudoers(5) .

1 votos

@medina: así es, me lo perdí cuando estaba leyendo la página man. Voy a editar.

6 votos

en Ubuntu, crear un archivo en /etc/sudoers.d y poner estas entradas en él, entonces dejará de tener que editar sudoers

123voto

Richipal Puntos 151

He probado las soluciones anteriores sin éxito. La siguiente solución me ha funcionado Edite el archivo /etc/sudoers y añada la siguiente línea

username ALL=(ALL) NOPASSWD: ALL

El clave es añadirlo después de la última línea que dice

#includedir /etc/sudoers.d

1 votos

// , Esta parece la mejor manera de hacerlo, especialmente cuando ciertas aplicaciones añadirán sus propias reglas para los usuarios del sistema, Richipal. Más información en sudoers.d: sudo.ws/man/1.8.13/sudoers.man.html

1 votos

// , ¿Estaría dispuesto a añadir algunos de los diagnósticos de Gearoid Murphy a su respuesta?

1 votos

Gracias por esta aclaración. Añadirlo después de la línea #includedir /etc/sudoers.d parece importante en CentOS 7 mientras que parece funcionar bien tener la línea antes en el archivo en CentOS 6.

28voto

Gearoid Murphy Puntos 241

He probado todas las respuestas de esta página, sin resultados útiles. Finalmente lo resolví, use este comando para listar sus derechos sudo:

sudo -l

Esto debería dar una salida como esta:

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL

Muestra que estoy configurado con privilegios de root pero que sigo siendo parte de un grupo (admin) que coincide con una regla de sudo que espera la contraseña ("(ALL) ALL"). Esto obligaba a sudo a preguntarme. La regla en cuestión era la de los usuarios admin:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Una vez que comenté esto, pude sudo sin contraseña. Espero que esto sea de utilidad para alguien más.

1 votos

Ahhh, ¡gracias! Esto me estaba volviendo loco... en mi caso, mi usuario formaba parte del grupo "sudo" así como de "admin" (que yo creé), y los permisos de cada uno estaban desajustados, como en tu caso. ¡Ahora estas cosas funcionan! :)

14 votos

Comentar una línea es un instrumento contundente. Te interesará saber que "sudo lee el archivo sudoers y aplica los permisos en orden de arriba a abajo. Así que la última línea en el archivo sobrescribirá cualquier conflicto anterior" según ubuntuforums.org/showthread.php?t=1132821 -- y esto funcionó para mí.

10voto

En /etc/sudoers hay un ejemplo de ello hacia el final del archivo:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

2 votos

esa muestra no estaba en la mía - ¡pero gracias!

1 votos

Como su respuesta sucinta

6voto

topdog Puntos 2793

Hay otra forma de hacerlo sin tocar el archivo sudoers.

  • Editar /etc/pam.d/su y descomentar la línea de abajo:

    auth           sufficient      pam_wheel.so trust use_uid
  • Añade el usuario al wheel grupo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: