¡Hola a todos!
Menciono el nombre «administrador» para que se entienda mejor el propósito de éste entrada de blog, y es que es un procedimiento bastante común e importante saberlo en un sistema GNU/Linux; en éste caso, me basaré en la distribución Ubuntu Server (aplica para cualquier distribución basado en Debian realmente…), el cual no cuenta (por defecto) con un entorno gráfico, por cuanto veremos el procedimiento para dar privilegios de root a un usuario mediante la línea de comando.
Lo primero es aprender para qué nos sirve sudo.
- sudo – Es un comando que nos permite ejecutar un comando (valga la redundancia) con privilegios de root (administrador).
- Nos permite implementar un control de acceso detallado para determinar los usuarios que podrán ejecutar comandos de sistema o con privilegios elevados (de root).
- Si un usuario desea ejecutar algún comando pero con los privilegios de root (administrador), se debe de agregar al inicio de la línea de comando la palabra clave sudo; sudo verifica la lista de permisos para ver si el usuario actual tiene los privilegios respectivos para ése fin.
- Si el usuario se encuentra en dicha lista de permisos, según la configuración, podrá ejecutar el comando sin problema.
- Dicha lista de control de usuarios/permisos se encuentra en un archivo específico, el cual es /etc/sudoers
Entonces, el archivo /etc/sudoers es importante, dado que le indica al comando sudo qué usuarios ejecutan qué comandos.
¿Cómo podemos modificar el archivo sudoers? como se lo imaginan… mediante un editor de texto (nano por ejemplo), pero también hay un comando que sirve específicamente para éste objetivo, el cual es visudo.
Tiene sus ventajas usar el comando visudo, y es que el archivo sudoers es muy importante y delicado, por cuanto debemos de estar seguros de lo que hacemos si estamos tocando dicho archivo por obvias razones… tiene que ver con la seguridad y los privilegios de ejecución de comandos en el sistema. No es poca cosa…
Obviamente, para ejecutar el comando visudo, es necesario tener privilegios elevados, por cuanto es necesario usar sudo. Véase el ejemplo de la imagen de abajo:
Entonces, se pone sudo, luego el comando; sudo pregunta por la contraseña del usuario que ejecuta el comando; si el usuario en cuestión no esta en la lista de control (/etc/sudoers), no servirá de nada poner la contraseña del usuario.
Si el usuario en cuestión sí esta en /etc/sudoers, se ejecuta la línea de comando y tendrá 5 minutos para volver a usar el mismo comando u otros a los que tuviera derecho, sin necesidad de ingresar la contraseña de nuevo.
Si se quiere extender el tiempo por otros 5 minutos, se debe de usar el parámetro -v (validate). Por el contario, si ya se terminó el procedimiento que se está haciendo con dichos privilegios, se puede agregar el parámetro -k (kill) para terminar con el tiempo de gracia de validación.
Con sudo, también podemos ejecutar comandos a nombre de otro usuario, de ésta forma:
sudo -u usuario2 visudo
Obviamente, el usuario «usuario2» debe de estar en el archivo /etc/sudoers y con los permisos necesarios para que pueda ejecutarse correctamente la línea de comando.
También, con el comando sudo, podemos editar archivos de texto con el editor de texto que tengamos por defecto en el sistema; en Ubuntu, recomiendo nano por cierto… Lo hacemos de la siguiente forma:
sudo -e /etc/fstab
En éste caso, el usuario actual deberá de estar dentro de /etc/sudoers para poder lograr ejecutarse bien la línea de comando, la cual abrirá en un editor de texto (nano, vi, o el que se tenga por defecto en el sistema) el archivo fstab , según el ejemplo de arriba.
Para listar los comandos permitidos (y prohibidos) para el usuario que invoca sudo en el host actual, se puede utilizar el siguiente parámetro:
sudo -l
Bien, hay más cosas qué decir del comando sudo, pero quiero irme directo a lo que nos lleva ésta entrada de blog… Entramos con el comando visudo al archivo /etc/sudoers para editarlo.
sudo visudo
Lo dividiremos en 3 partes:
- Alias
- Opciones (Defaults)
- Reglas de acceso
Cada sección es un tema bastante complejo de explicar, por cuanto si se quiere ahondar más en ello, les recomendaría «googlear» y aprender más de éste archivo; para efectos de ésta entrada, nos centraremos en dar todos los privilegios (permisos) a un usuario específico, como para hacerlo administrador (root). A continuación, un ejemplo:
oscard ALL=(ALL:ALL) ALL
Asumamos que dicha línea la hemos agregado al final del archivo /etc/sudoers o, si deseamos ser ordenados, se debería de colocar en la sección «User privilege specification«.
Donde «oscard» sería el nombre del usuario al que le queremos dar privilegios de root. Veamos un poco cada ALL que se ven aquí:
- oscard ALL=(ALL:ALL) ALL → En éste primer ALL se indica que la regla de acceso se aplica a cualquier anfitrión (o host).
- oscard ALL=(ALL:ALL) ALL → El usuario (oscard) podrá usar comandos de cualquier usuario.
- oscard ALL=(ALL:ALL) ALL → Si el anterior «ALL» permitía usar comandos de usuarios, éste lo hará de grupos.
- oscard ALL=(ALL:ALL) ALL → Las reglas se aplican a todos los comandos.
Guardamos el archivo y no nos queda más que verificar que todo este bien. Lo más práctico, es cerrar sesión y volver a entrar (comando exit e iniciar la sesión de nuevo), pero creo que hay una línea de comando más elegante para forzar la aplicación de la configuración… no la recuerdo la verdad.
Ahora, cuando pongamos cualquier línea de comando anteponiéndole «sudo» con el usuario que especificamos en /etc/sudoers, se ejecutará sin que nos solicité contraseña.
Eso es todo amigos. ¡Saludos!
como otorgar permisos al usuario para que pueda ejecutar comando sin anteponer el comando sudo y sin cambiar a root
por ejemplo
crear una carpe en la / sin requerir el comando sudo
mkdir /nombre
Requiero poder crear y modificar carpetas sin cambiar a root
con el usuario por defecto