El sistema Linux es mucho más seguro que cualquiera de sus contrapartes. Una de las maneras de implementar seguridad en Linux es la política de gestión de usuarios y permisos de usuario, y a los usuarios normales no se les autoriza realizar operaciones del sistema.
Si un usuario normal necesita realizar algún cambio a nivel del sistema, debe usar el comando ‘su’ o ‘sudo’.

NOTA – Este artículo es más aplicable a distribuciones basadas en Ubuntu, pero también es aplicable a la mayoría de las distribuciones Linux populares.
‘su’ Vs ‘sudo’
El comando ‘su’ te obliga a compartir tu contraseña de root con otros usuarios, mientras que ‘sudo’ permite ejecutar comandos del sistema sin la contraseña de root. ‘sudo’ te permite usar tu propia contraseña para ejecutar comandos del sistema, es decir, delega responsabilidad del sistema sin la contraseña de root.
¿Qué es ‘sudo’?
‘sudo’ es un binario raíz setuid, que ejecuta comandos de root en nombre de usuarios autorizados y los usuarios deben ingresar su propia contraseña para ejecutar el comando del sistema seguido por ‘sudo’.
¿Quién puede ejecutar ‘sudo’?
Podemos ejecutar ‘/usr/sbin/visudo’ para añadir/quitar la lista de usuarios que pueden ejecutar ‘sudo’.
$ sudo /usr/sbin/visudo
A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:
La lista sudo se ve como la siguiente cadena, por defecto:
root ALL=(ALL) ALL
Nota: Debes ser root para editar el archivo /usr/sbin/visudo.
Concediendo Acceso
En muchas situaciones, el Administrador del Sistema, especialmente quien es nuevo en el campo, encuentra la cadena “root ALL=(ALL) ALL” como una plantilla y concede acceso irrestricto a otros, lo cual podría ser potencialmente muy dañino.
Editar el archivo ‘/usr/sbin/visudo’ con un patrón como el siguiente realmente podría ser muy peligroso, a menos que confíes completamente en todos los usuarios listados.
root ALL=(ALL) ALL adam ALL=(ALL) ALL tom ALL=(ALL) ALL mark ALL=(ALL) ALL
Parámetros de sudo
A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.
La sintaxis de la línea configurada de ‘sudo‘ es:
User_name Machine_name=(Effective_user) command
La sintaxis anterior se puede dividir en cuatro partes:
- Nombre_de_usuario: Este es el nombre del usuario de ‘sudo‘.
- Nombre_de_máquina: Este es el nombre del host, en el que el comando ‘sudo‘ es válido. Útil cuando tienes muchas máquinas host.
- (Usuario_Efectivo): El ‘Usuario Efectivo’ que tiene permitido ejecutar los comandos. Esta columna te permite permitir a los usuarios ejecutar Comandos de Sistema.
- Comando: comando o un conjunto de comandos que el usuario puede ejecutar.
Lectura sugerida: 10 Configuraciones útiles de Sudoers para configurar ‘sudo’ en Linux
Algunas de las situaciones y su correspondiente línea ‘sudo‘:
Q1. Tienes un usuario mark que es Administrador de Base de Datos. Se supone que debes brindarle acceso total solo al Servidor de Base de Datos (beta.database_server.com), y no a ningún otro host.
Para la situación anterior, la línea ‘sudo’ puede escribirse como:
mark beta.database_server.com=(ALL) ALL
Q2. Tienes un usuario ‘tom‘ que se supone debe ejecutar comandos del sistema como usuario distinto de root en el mismo Servidor de Base de Datos, como se explicó anteriormente.
Para la situación anterior, la línea ‘sudo’ puede escribirse como:
mark beta.database_server.com=(tom) ALL
Q3. Tienes un usuario sudo ‘cat‘ que solo debe ejecutar el comando ‘dog‘.
Para implementar la situación anterior, podemos escribir ‘sudo’ como:
mark beta.database_server.com=(cat) dog
Q4. ¿Qué sucede si se necesita otorgar varios comandos al usuario?
Si el número de comandos que se supone que el usuario debe ejecutar es menor a 10, podemos colocar todos los comandos uno al lado del otro, con un espacio en blanco entre ellos, como se muestra a continuación:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
Si esta lista de comandos varía en el rango, donde literalmente no es posible escribir cada comando manualmente, necesitamos utilizar alias. ¡Alias! Sí, la utilidad de Linux donde un comando largo o una lista de comandos se puede referir con una palabra clave corta y fácil.
A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.
User_Alias ADMINS=tom,jerry,adam user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top
Es posible especificar un grupo de sistema, en lugar de usuarios, que pertenezca a ese grupo simplemente añadiendo ‘%’ como se muestra a continuación:
%apacheadmin WEBSERVERS=(www) APACHE
P5. ¿Qué tal ejecutar un comando ‘sudo’ sin ingresar la contraseña?
Podemos ejecutar un comando ‘sudo’ sin ingresar la contraseña usando la bandera ‘NOPASSWD‘.
adam ALL=(ALL) NOPASSWD: PROCS
Aquí el usuario ‘adam’ puede ejecutar todos los comandos alias bajo “PROCS”, sin necesidad de ingresar contraseña.
Lectura Sugerida: Deje que Sudo te Insulte Cuando Ingresas una Contraseña Incorrecta
“sudo” te brinda un entorno robusto y seguro con mucha flexibilidad en comparación con ‘su’. Además, la configuración de “sudo” es sencilla. Algunas distribuciones de Linux tienen “sudo” habilitado de forma predeterminada, mientras que la mayoría de las distribuciones hoy en día requieren que lo habilites como una Medida de Seguridad.
Para añadir un usuario (bob) a sudo simplemente ejecuta el siguiente comando como root.
adduser bob sudo
Eso es todo por ahora. Estaré aquí de nuevo con otro artículo interesante. Mientras tanto, mantente atento y conectado a Tecmint. No olvides proporcionarnos tus valiosos comentarios en nuestra sección de comentarios.
Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/