
¿Sabes sudo verdad? Debes haberlo usado en algún momento.
Para la mayoría de los usuarios de Linux, es una herramienta increíble que les permite ejecutar cualquier comando como usuario root o cambiar a usuario root.
Pero esto es sólo una verdad a medias. Mira, sudo no es un comando absoluto. sudo es una herramienta que se puede configurar para satisfacer sus necesidades y preferencias.
Ubuntu, Debian y otras distribuciones vienen preconfiguradas con sudo, lo que les permite ejecutar cualquier comando como root. Esto lleva a muchos usuarios a creer que sudo es una especie de interruptor mágico que instantáneamente le otorga acceso de root.
Por ejemplo, un administrador del sistema puede configurarlo para que los usuarios que pertenecen a un determinado grupo «dev» solo puedan usar sudo para ejecutar comandos nginx. Estos usuarios no podrán usar sudo para ejecutar ningún otro comando ni cambiar a root.
Si esto te sorprende, es porque probablemente has estado usando sudo pero nunca pensaste detenidamente en su mecánica subyacente.
No explicaré cómo funciona Sudo en este tutorial. Lo guardaré para otro día.
En este artículo, aprenderá cómo ajustar diferentes aspectos de sudo. Algunas son útiles, otras son inútiles pero divertidas.
🚧
1. Utilice siempre visudo para editar la configuración de sudo
El comando sudo se configura de la siguiente manera /etc/sudoers
documento.
Si bien puede editar este archivo utilizando su editor de texto basado en terminal favorito (como Micro, NeoVim, etc.), Definitivamente no Hazlo.
¿Por qué? Debido a que cualquier sintaxis incorrecta en este archivo provocará que el sistema falle, sudo no funcionará. Esto puede inutilizar su sistema Linux.
Úselo así:
sudo visudo
este visudo
El comando tradicionalmente se abre. /etc/sudoers
Archivos en el editor Vi. Ubuntu lo abrirá en Nano.
La ventaja aquí es visudo realiza una verificación de sintaxis cuando intenta guardar cambios. Esto garantiza que no estropee su configuración de sudo con una sintaxis incorrecta.

¡Está bien! Ahora puedes ver algunos cambios en la configuración de Sudo.
💡
sudo cp /etc/sudoers /etc/sudoers.bak
2. Se muestran asteriscos al ingresar la contraseña usando sudo
Heredamos este comportamiento de UNIX. Cuando ingresa su contraseña de sudo en la terminal, no muestra nada. La falta de retroalimentación visual puede hacer que los nuevos usuarios de Linux piensen que su sistema no funciona.
Los ancianos dicen que esto es una característica de seguridad. Puede que este haya sido el caso durante el último siglo, pero no creo que debamos seguir haciéndolo. Esta es sólo mi opinión.
De todos modos, algunas distribuciones (como Linux Mint) modifican sudo para que muestre un asterisco al ingresar la contraseña.
Ahora bien, esto está más en consonancia con el comportamiento que vemos en todas partes.
Para mostrar los asteriscos usando sudo, ejecute sudo visudo
y busca esta línea:
Defaults env_reset
Cámbielo a:
Defaults env_reset,pwfeedback

💡
En algunas distribuciones (por ejemplo, Arch) es posible que no encuentre la línea Defaults env_reset. Si este es el caso, simplemente agregue una nueva línea con el texto Valores predeterminados env_reset, pwfeedback
Ahora, si intentas usar sudo y te pide una contraseña, deberías ver asteriscos al ingresar la contraseña.

✋
Si nota algún problema con la no aceptación de contraseñas, incluso si son correctas en aplicaciones gráficas como el Centro de software, deshaga este cambio. Algunas publicaciones antiguas del foro mencionan esto. Pero aún no lo he encontrado.
3. Aumentar el tiempo de espera de la contraseña de sudo
Por lo tanto, la primera vez que uses sudo te pedirá tu contraseña. Sin embargo, para comandos sudo posteriores, no es necesario ingresar una contraseña dentro de un cierto período de tiempo.
Lo llamamos tiempo de espera de contraseña de sudo (o SPT, lo acabo de inventar. No lo llames así 😁).
Diferentes distribuciones tienen diferentes tiempos de espera. Podrían ser 5 minutos o 15 minutos.
Puede cambiar el comportamiento y establecer un tiempo de espera de contraseña de sudo de su elección.
Como se vio arriba, edite el archivo sudoer y busque la línea que contiene: Defaults env_reset
y añadir timestamp_timeout=XX
a esa línea para que se vea así:
Defaults env_reset, timestamp_timeout=XX
donde XX es el tiempo de espera en minutos.
Si tiene otros parámetros, como la retroalimentación de asterisco que vio en la sección anterior, todos se pueden combinar:
Defaults env_reset, timestamp_timeout=XX, pwfeedback
💡
Asimismo, puedes controlar los límites de reintento de contraseña. Utilice passwd_tries=N para cambiar la cantidad de veces que un usuario ingresa una contraseña incorrecta.
4. Utilice sudo sin contraseña
¡Está bien! Así que aumentaste el tiempo de espera de la contraseña de sudo (o SPT. ¡Guau! Todavía lo llamas así 😛).
No importa. Me refiero a quién le gusta ingresar su contraseña cada pocos minutos.
Agregar tiempos de espera es una cosa. Otra cosa es no usarlo todo.
Sí, lo leiste bien. Puedes usar sudo sin ingresar una contraseña.
Desde una perspectiva de seguridad, esto suena arriesgado, ¿verdad? Eso es cierto, pero hay algunas situaciones de la vida real en las que sería (más productivo) mejor usar sudo sin contraseña.
Por ejemplo, si administra varios servidores Linux de forma remota y crea usuarios sudo en ellos para evitar usar root todo el tiempo. El problema es que tienes demasiadas contraseñas. No desea utilizar la misma contraseña de sudo para todos los servidores.
En este caso, puede configurar solo el acceso SSH basado en clave al servidor y permitir sudo con una contraseña. De esta forma, solo los usuarios autorizados pueden acceder al servidor remoto y no es necesario recordar la contraseña de sudo.
Hago esto en un servidor de prueba implementado en DigitalOcean para probar herramientas y servicios de código abierto.
El beneficio es que esto se puede hacer por usuario.Abierto /etc/sudoer
Archivo para editar:
sudo visudo
Luego agregue esta línea:
user_name ALL=(ALL) NOPASSWD:ALL
Por supuesto que necesitas reemplazar user_name
Utilice el nombre de usuario real en la línea de arriba.
Guarde el archivo y disfrute de la vida sudo sin contraseña.
5. Cree un archivo de registro sudo separado
Siempre puede leer las entradas relacionadas con sudo en el syslog o en los registros de registro.
Sin embargo, si desea entradas separadas para sudo, puede crear un archivo de registro personalizado específicamente para sudo.
Digamos que quieres usar /var/sudo.log
Archivado para este propósito. No es necesario crear nuevos archivos de registro de antemano. Si no existe, se creará para usted.
Utilice visudo para editar el archivo /etc/sudoers y agréguele las siguientes líneas:
Defaults logfile="/var/log/sudo.log"
Guárdelo y podrá comenzar a ver qué comandos ejecutó sudo en este archivo, cuándo y por qué usuario:

6. Solo permita que grupos de usuarios específicos usen sudo para ejecutar ciertos comandos
Se trata más bien de una solución avanzada utilizada por administradores de sistemas en entornos multiusuario donde personas de todos los departamentos trabajan en el mismo servidor.
Es posible que los desarrolladores necesiten ejecutar un servidor web o algún otro programa con privilegios de root, pero darles acceso completo a sudo sería un problema de seguridad.
Si bien esto se puede hacer a nivel de usuario, recomiendo hacerlo a nivel de grupo.Supongamos que crea un archivo llamado coders
y les permites ejecutar comandos (o binarios) desde /var/www
y /opt/bin/coders
directorio e instrucciones inxi (binarias /usr/bin/inxi
).
Este es un escenario hipotético. Por favor, no lo tomes palabra por palabra.
Ahora, edite el archivo sudoer. sudo visudo
(Sí, ya lo sabes). Agregue las siguientes líneas:
%coders ALL=(ALL:ALL) /var/www,/opt/bin/coders,/usr/bin/inxi
Si lo desea, puede agregar el parámetro NOPASSWD para poder usar sudo para ejecutar los comandos permitidos anteriormente sin contraseña.
Consulte otros artículos para obtener más información sobre TODO TODO TODO, ya que este artículo es más largo de lo habitual.
7. Verifique los derechos de acceso sudo del usuario.
¡Está bien! Esto es más un consejo que un ajuste.
¿Cómo sé si un usuario tiene acceso sudo? Dices, comprueba si son miembros del grupo sudo. Pero esto no está garantizado. Algunas distribuciones utilizan el nombre de la rueda en lugar de sudo.
Un mejor enfoque es utilizar la funcionalidad incorporada de sudo y ver qué acceso a sudo tiene el usuario:
sudo -l -U user_name
Mostrará si el usuario tiene acceso sudo a algunos o todos los comandos.

Como puede ver arriba, muestra que además del acceso sudo a todos los comandos, tengo un archivo de registro personalizado y comentarios de contraseña.
Si el usuario no tiene ningún acceso sudo, verá el siguiente resultado:
User prakash is not allowed to run sudo on this-that-server.
🎁 Bonificación: deja que sudo te insulte por probar contraseñas incorrectas
Este es el ajuste «inútil» que mencioné al principio de este artículo.
Supongo que debiste haber ingresado la contraseña incorrecta cuando usaste sudo en el pasado, ¿verdad?
Este pequeño ajuste permite que sudo te insulte aleatoriamente por ingresar una contraseña incorrecta.
usar sudo visudo
Edite el archivo de configuración de Sudo y agréguele las siguientes líneas:
Defaults insults
Luego puede probar el cambio ingresando la contraseña incorrecta:

Quizás te preguntes ¿a quién le gusta que lo insulten? Solo los fans pueden responder esta pregunta con imágenes y texto😇
¿Cómo haces sudo?

Sé que la personalización nunca termina. No obstante, sudo no es algo que los usuarios normales de Linux puedan personalizar.
Aun así, me gusta compartir estas cosas contigo porque es posible que encuentres algo nuevo y útil.
💬 Entonces, ¿descubriste algo nuevo? Por favor dímelo en los comentarios. ¿Tienes algún truco secreto de sudo? ¿Por qué no compartirlo con el resto de nosotros?