Muy buenas lector. Siguiendo con el artículo que publiqué hace unos días sobre el usuario root y los mecanismos de control de privilegios en Linux, el cual te recomiendo su lectura como parte previa de este post, en esta guía verás como habilitar o deshabilitar el uso de root, y modificar el comportamiento de sudo para adaptarlo en consonancia.

Esto te permitirá modificar el comportamiento de tu sistema, y alternar entre la opción de utilizar root para las tareas administrativas, junto con tu usuario normal, o bien mantener bloqueada la cuenta de root, y trabajar únicamente con tu usuario estándar (haciendo uso de sudo para la concesión temporal de privilegios).

Anuncios

Tabla de Contenidos:

Un Poco de Contexto

Como sabrás, hay muchas distribuciones GNU/Linux, y no todas tienen la misma concepción a la hora de operar con la cuenta de root o superusuario. Tradicionalmente, en Unix y Linux siempre ha estado muy clara la distinción entre la cuenta de admin o superusuario y el resto de cuentas normales de usuario.

Sin embargo, de cara a simplificar la gestión para los usuarios menos experimentados, muchas distribuciones (empezando por Ubuntu) fueron adoptando la práctica de bloquear completamente la cuenta de root y utilizar sudo como método para permitir al usuario estándar, de forma temporal y limitada, realizar tareas como si fuera root.

Para resumir (el detalle lo tienes en el post que enlazo al principio de esta guía), existen dos concepciones diferentes:

Cuenta de root bloqueada . Esto significa que tu usuario estándar tiene permisos para hacer ciertas tareas como si fuera superusuario de manera puntual y por un tiempo limitado. En este caso, para realizar este tipo de tareas, tendrás que acreditarte como tal, dando la password propia de tu usuario (ya sea utilizando sudo por consola, o en los promps de PolicyKit en el entorno gráfico).

. Esto significa que tu usuario estándar tiene permisos para hacer ciertas tareas como si fuera superusuario de manera puntual y por un tiempo limitado. En este caso, para realizar este tipo de tareas, tendrás que acreditarte como tal, dando la password propia de tu usuario (ya sea utilizando sudo por consola, o en los promps de PolicyKit en el entorno gráfico). Cuenta de root habilitada. Esto significa que para las tareas que requieran permisos elevados, tendrás que acreditarte como superuruario (ya sea utilizando su en la terminal, o en los promps gráficos de PolKit).

Hay distribuciones, como Ubuntu y muchos de sus derivados, que optan de facto por la primera opción. Otras, como Debian, Fedora u openSUSE, dan ambas opciones a elegir en en proceso de instalación. En cualquier caso, independientemente de la configuración por defecto, GNU/Linux es un sistema suficientemente flexible como para permitirte modificar este comportamiento en cualquier momento.

Habilitar la Cuenta de Superusuario

Anuncios

El primer escenario en el que te puedes encontrar, es el de estar en un sistema como Ubuntu o cualquiera de sus derivados, en el que la cuenta de root está deshabilitada. En este caso, si quieres poder hacer uso de admin para las tareas que requieran permisos elevados, el primer paso es desbloquear su cuenta y asignarle una contraseña.

Antes de seguir con esto, una pequeña advertencia: debes evitar hacer cualquier inicio de sesión como superusuario. Esto supondría que todas las aplicaciones y procesos del sistema se estarán ejecutando como root, con el enorme riesgo que ello supone.

Para operar como root a través de la consola, lo suyo es hacer uso de ‘su’, y cerrar sesión inmediatamente después de haber hecho la acción que requería esos privilegios. En el entorno gráfico no hay tanto problema, ya que, ante cualquier acción que lo requiera, PolKit ya desplegará un promp pidiendo las credenciales de admin (y el permiso únicamente será válido para esa acción concreta).

Asignar Contraseña a Root

Desbloquear la cuenta de superuser y asignarle una contraseña es tan sumamente sencillo como abrir una ventana de terminal y teclear el siguiente comando (que te pedirá que le insertes dos veces la contraseña, y listo):

sudo passwd root

Ahora ya tienes la cuenta desbloqueada, pero realmente con esta sola acción no ha cambiado nada más en el sistema, ya que ni la configuración de sudo ni de tu usuario han cambiado. Es decir:

Para realizar tareas administrativas desde la terminal podrás seguir utilizando sudo con la contraseña de tu usuario estándar.

De igual modo al realizar ciertas acciones en el entorno de escritorio, el promp de PolicyKit te seguirá pidiendo la contraseña de usuario normal.

Ahora, si lo que quieres es que para realizar tareas con privilegios de admin, tengas que acreditarte como root y conocer su contraseña, lo que falta es restringir las opciones de tu usuario estándar, para evitar que pueda actuar como root a través de sudo (o PolKit en el entorno gráfico).

Comprobar Configuración de Sudo

El comportamiento de sudo de establece en el fichero “sudoers”, que se encuentra siguiendo esta ruta: /etc/sudoers. Sin embargo, lo más recomendable es consultar o editar el fichero a través de la terminal, mediante el editor vi. Para ello, tan solo debes ejecutar esto en la línea de comandos:

sudo visudo

Con esto puedes visualizar el contenido del fichero sudoers a través de la consola. No voy a copiar todo el contenido del fichero, ya que es bastante largo, sino únicamente el contenido al que debes prestar atención. Estas son las líneas en las que debes fijarte, y este es el aspecto que tienen en instalación estándar de Ubuntu:

# User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL

En resumen, esto significa lo siguiente:

La primera parte indican los usuarios que pueden usar privilegios de root de forma temporal. Como ves, aquí no aparece tu cuenta de usuario normal, sino únicamente la de root, lo cual ya es correcto. El quid de la cuestión viene a continuación.

indican los de forma temporal. Como ves, aquí no aparece tu cuenta de usuario normal, sino únicamente la de root, lo cual ya es correcto. El quid de la cuestión viene a continuación. En la segunda parte se indica que todos los usuarios que son miembros del grupo admin pueden ganar privilegios de root. En las versiones más modernas, este grupo ya no se utiliza (se mantiene en “sudoers” por cuestiones d ecompatibilidad).

se indica que todos los usuarios que son miembros del grupo admin pueden ganar privilegios de root. En las versiones más modernas, este grupo ya no se utiliza (se mantiene en “sudoers” por cuestiones d ecompatibilidad). En la tercera parte se indica que todos los miembros del grupo sudo pueden ejecutar cualquier comando. Esto es lo que permite a tu usuario normal operar como root, ya que en Ubuntu, y todos sus derivados, el usuario estándar creado en el momento de la instalación es miembro del grupo sudo.

Como en sudoers no se indica ningún usuario de forma individual, lo más recomendable, almenos bajo mi criterio, es dejar este fichero tal como está, y quitar simplemente a tu usuario del grupo sudo. Siempre que se pueda, es mas manejable trabajar con grupos que con usuarios individuales.

Quitar el Usuario Estándar del Grupo Sudo

Primero de todo, te recomiendo comprobar todos los grupos de que es miembro tu usuario normal (el que se creaste en el momento de la instalación del sistema). Esto puedes comprobarlo a través del siguiente comando (sustituyendo “user” por el nombre de tu usuario):

sudo groups user

En mi caso, en una instalación limpia de Ubuntu, mi usuario normal es miembro de todos estos grupos, entre los que, como ves, se incluye sudo.

user : test adm cdrom sudo dip plugdev lpadmin sambashare

Para eliminar tu usuario del grupo sudo, puedes utilizar el siguiente comando (sustituyendo “user” por el nombre de tu usuario):

sudo deluser user sudo

Hecho esto, tu usuario estándar ya no podrá ejecutar acciones como admin a través de sudo, por lo que tendrás que acreditar la contraseña de root siempre que quieras realizar acciones que requieran privilegios de admin. Esta acción también afecta al funcionamiento de PolicyKit en el entorno gráfico.

En la terminal , si intentas realizar una acción con sudo, después de acreditarte con tu usuario normal, te saldrá un mensaje indicándote que tu usuario no se encuentra en el archivo sudoers.

, si intentas realizar una acción con sudo, después de acreditarte con tu usuario normal, te saldrá un mensaje indicándote que tu usuario no se encuentra en el archivo sudoers. En el entorno de escritorio, ante cualquier acción que requiera elevación, el promp que aparecerá ahora ya no te pedirá la password de tu usuario normal, sino la de root.

Deshabilitar la Cuenta de Superusuario

Visto lo anterior, ahora toca estudiar el caso contrario. Bien porqué tu distribución ya venía de serie con el usuario root habilitado, o porqué lo hayas habilitado tu de forma manual, siempre estás a tiempo de bloquear el inicio de sesión de root y operar únicamente con tu cuenta personal y la ayuda de sudo.

Revisar la Configuración de Sudoers

Antes de deshabilitar completamente la cuenta de superusuario, es importante revisar la configuración de sudo, ya que cada vez que queramos realizar una tarea que requiera privilegios, deberemos escalar a root a través de sudo y con las credenciales de usuario normal.

Para ello, debes abrir el archivo sudoers mediante el editor Vi. Como esa acción requiere privilegios de admin, debes utilizar su como paso previo para operar a través de root.

su

Después de introducir la password de superusuario, automáticamente pasarás a operar a través de esa cuenta (lo verás por el cambio en el promp). Hecho esto, ya puedes abrir sudoers escribiendo esta sentencia:

visudo

De nuevo, debes prestar atención en esta parte:

# User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL

Estando ahí, una opción sería, en el primer apartado, añadir tu usuario normal debajo de root, por tal que pueda utilizar sudo para ejecutar las sentencias que requieran privilegios.

Sin embargo, personalmente prefiero no hacer excepciones a nivel de usuario, y aprovechar la existencia de grupos, al igual que hemos echo antes. En este caso, según se puede ver en sudoers, bastaría con añadir tu usuario al grupo sudo.

Añadir tu Usuario al Grupo Sudo

Para añadir tu usuario normal al grupo sudo puedes utilizar el siguiente comando (sustituyendo “user” por el nombre de tu usuario):

sudo adduser user sudo

Hecho esto, tu usuario estándar ya podrá ejecutar acciones como admin a través de sudo.

Bloquear el Uso de Root

Una vez te has asegurado de que sudo está configurado adecuadamente, y teniendo tu usuario normal dentro del grupo que permite la elevación para ejecutar sentencias como root (a través de sudo y de PolKit), ahora ya solo queda un ultimo paso: bloquear la cuenta de root.

sudo passwd -dl root

Ahora ya has eliminado la posibilidad de hacer cualquier inicio de sesión como root. Esto implica que:

En la consola , cualquier sentencia que requiera privilegios de root, deberás hacerla a través de sudo acreditando la contraseña de usuario normal.

, cualquier sentencia que requiera privilegios de root, deberás hacerla a través de sudo acreditando la contraseña de usuario normal. En el entorno gráfico, ante determinado tipo de tareas, el promp que te aparecerá ya no te pedirá por la contraseña de admin, sino por la de tu cuenta de usuario normal.

Despedida y Cierre

Y con esto llegamos al final de esta guía. Como ves, lo bueno de GNU/Linux es su flexibilidad a la hora de parametrizar el comportamiento del sistema. Así, el hecho de que estés en Ubuntu, por ejemplo, no te impide en absoluto habilitar root y modificar sudoers para adoptar el modelo que sigue Debian o Fedora. Y viceversa.

Otra cosa importante a señalar es que, entre esas dos opciones que hemos visto, hay una gran cantidad de matices y combinaciones con las que puedes jugar, vasta con jugar un poco con la configuración de sudo y los grupos de usuario.

Ya para no alargarme más, simplemente decir que si te ha gustado el post, me ayudará mucho que lo compartas por Twitter, Facebook o Google Plus. Por otra parte, si tienes cualquier duda, tienes la sección de comments debajo. Hasta la próxima!