El Usuario Root y el Control de Privilegios en Linux: Sudo, Su y PolicyKit

Linux: Usuario Root y Control de Privilegios. Sudo, Su y PolicyKit

Muy buenas lector. Retomando un poco el artículo sobre el funcionamiento de la arquitectura de permisos en Linux, hoy quiero hacer una tercera parte para profundizar un poco más sobre el usuario root, y la gestión de los privilegios de superusuario.

En este post, pues, te contaré más sobre el usuario root, sobre las herramientas de control de privilegios, principalmente sudo, su y PolicyKit, y sobre los diferentes enfoques que adoptan las diferentes distribuciones entorno a la gestión de privilegios.

Tabla de Contenidos:

  1. El usuario Root o Superusuario
  2. Las herramientas de control de privilegios
    1. Sudo
    2. Su
    3. PolicyKit
  3. Como gestionan Root las diferentes distribuciones
    1. Root deshabilitado. Uso de Sudo y Policykit
    2. Root habilitado. Uso de Su y Policykit
  4. Despedida y Cierre

1. El Usuario Root o Superusuario

Como cuento en el post anterior que acabo de enlazar, el usuario root en Linux es el usuario que posee mayor nivel de privilegios en el sistema. De hecho, es el único que tiene privilegios sobre todo el sistema, y el responsable de las tareas administrativas.

De este modo, cuando tu, o cualquier programa, quiera hacer una acción que requiera permisos de root o superusuario, de alguna manera se tendrán que acreditar estos permisos.

Y aquí es donde viene lo interesante, ya que no todas las distribuciones hacen el mismo uso de de cuenta de superusuario, como verás un poco más adelante. Antes, por eso, es importantes que conozcas las principales herramientas de control de privilegios que entran en juego en esta ecuación.

2. Las Herramientas de Control de Privilegios: Sudo, Su y PolicyKit

Actualmente, la mayoría de sistemas operativos modernos, ya sean Linux, Windows o macOS, funcionan separando muy claramente los privilegios entre usuarios.

Así, existe generalmente un usuario administrador o superusuario, que es el que posee el máximo nivel de privilegios en el sistema (el Administrador de Windows, y root en Linux y macOS), y el resto de usuarios, con un nivel de privilegios mucho más restringido.

A partir de ahí, para evitar tener que iniciar sesión con un usuario u otro, dependiendo de si queremos administrar el sistema o no (eso es lo que teníamos que hacer en Windows XP, por ejemplo), existen los sistemas de control de privilegios, para facilitar toda esa gestión de elevación de permisos.

Windows, por ejemplo, hace uso de su famoso Control de Cuentas de Usuario o UAC. Sobre el, te cuento en detalle como funciona en este post, y como puedes configurarlo, en este otro post.

GNU/Linux también hace uso de sus propias herramientas a la hora de gestionar los privilegios. En este contexto, las que se suelen utilizar son sudo, su, y PolicyKit.

Mientras sudo lo que te pide son las credenciales del usuario actual, su requiere que le des, en su configuración estándar, las credenciales de la cuenta de root.

Sudo

Sudo es, esencialmente, una programa que permite al usuario actual, ejecutar aplicaciones o procesos bajo los privilegios de otro usuario.

Esta es, digamos, la definición formal de sudo. A partir de ahí, el uso más general que se le suele dar es el de permitir ejecutar procesos bajo los privilegios de root. De hecho, esta es la idea inicial con la que nace. Su nombre viene justamente de “supersuer do”.

Esta configuración, la de ejecutar aplicaciones o procesos bajo los privilegios de superusuario, es en la que se basan muchas distribuciones que optan por deshabilitar el uso de root por parte de los usuarios regulares.

Sudo, como tal, es una herramienta que se usa específicamente desde la línea de comandos. Se utiliza acompañada de comandos que requieran permisos elevados.

Su uso consiste únicamente en ser introducido delante del comando en cuestión, para indicar que ese comando se va a ejecutar bajo los permisos de otra cuenta (por defecto, root).

$ sudo <comando>

Aunque es una herramienta de la terminal, también tiene contrapartidas gráficas, Gksudo y Kdesudo. Lo que hacen estas es emular el mismo comportamiento, pero en la sesión gráfica.

De este modo, cuando se intentan realizar acciones que requieren elevación (por ejemplo, instalar una aplicación desde la tienda de software) se encargan de desplegar un promp, para que el usuario se acredite como tal.

Aún así, dentro de la sesión gráfica la tendencia actual es a utilizar PolicyKit, en substitución de Gksudo o Kdesudo.

Su

Su es una herramienta similar a sudo, que permite hacer un salto de usuario, para ejecutar acciones a nombre de este otro usuario. De hecho, su nombre viene de “switch user” o “substitute user”.

Así, mientras que sudo permite ejecutar procesos con los privilegios de otro usuario (pero sin hacer un cambio de usuario), su si que realiza un salto de usuario.

De hecho, si lo utilizas, verás que mientras que sudo requiere unicamente las credenciales del propio usuario con el que estás logueado (tu usuario estándar), para utilizar su debes conocer las credenciales del nuevo usuario al que quieres apuntar.

Como sudo, es una herramientas para utilizarse mediante la línea de comandos. Se utiliza, seguido del nombre de usuario a nombre del que se quiere actuar (por omisión, root). En caso de saltar a root, el cambio de forma del promp es un claro indicativo para identificarlo.

$ su
#

Es muy común utilizarlo en aquellas distribuciones que prefieren mantener abierta la cuenta de root para que cualquier usuario que conozca las credenciales de superusuario (entendiéndose que conozca la contraseña) pueda hacer un salto de sesión y ejecutar comandos desde ahí.

Asimismo, al igual que ocurre con sudo, también tiene sus contrapartidas gráficas, Gksu y Kdesu, que emulan el mismo comportamiento.

Policykit

https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html

En breve…

3. Como Gestionan Root los Diferentes Distribuciones

Como he empezado diciendo al principio, no todas las distribuciones optan por la misma concepción a la hora de operar con la cuenta de superusuario. Estás son las dos concepciones que se suelen dar:

Root Deshabilitado. Uso de Sudo y/o PolicyKit

Hay muchas distribuciones (Ubuntu o Linux Mint entre otras) que optan, directamente, por venir, por defecto, con el la cuenta de Root deshabilitada. Realmente, lo que significa eso es que se impiden que tu, o cualquier otro usuario, puedan iniciar una sesión con él, ni desde la sesión gráfica, ni desde la terminal.

En estos casos, las tareas administrativas se hacen desde el propio usuario estándar, a través de sudo (o su contrapartida gráfica), y PolicyKit.

Cuando esto es así, generalmente sudo está configurado de tal modo que el usuario estándar que has creado durante la instalación del sistema, pueda hacer uso de los privilegios de Root, acreditándose previamente.

1. Uso permanente como usuario estándar. El sistema funciona permanentemente bajo la cuenta de tu usuario estándar, y por tanto, todos las aplicaciones y procesos asociados se ejecutan con un nivel de privilegio reducido.

Usuario Estándar Intenta Realizar Acción que Requiere Privilegios

2. Acreditación para tarea que requiere privilegios. En este punto, cuándo el usuario requiere realizar una tarea administrativa, si es mediante la sesión gráfica, el sistema le pedirá sus credenciales (probablemente a través de Policykit, antiguamente con Gksudo). Si es desde la terminal, deberá realizar la acción a través de sudo, e introduciendo nuevamente sus credenciales.

Realizar Acción que Requiere Privilegios con Sudo

3. Ejecución de la tarea. Si en el archivo sudoers el usuario actual está acreditado (si hay un único usuario y root está deshabilitado, por defecto debería ser así), se ejecutará la acción con los permisos de root. En la captura se ve claramente el proceso asociado ejecutándose como root.

Proceso Ejecutado Mediante Sudo

4. Finaliza la acción. Al finalizar la acción, se sigue estando, por lo tanto, en la misma sesión de usuario estándar. La elevación solo se ha dado en el proceso implicado, durante su ejecución. Cualquier otra acción que requiera privilegios de superusuario, requerirá de nuevo el uso de sudo.

Finaliza la Acción con Privilegios Realizada con Sudo

Las ventajas de esta concepción son varias, pero principalmente, las más destacables podríamos decir que son estas:

  • Por un lado, te evitas tener que memorizar dos contraseñas (la tuya y la de root). La tuya te sirve tanto para entrar, como para realizar ciertas tareas administrativas, mediante sudo.
  • Todas las aplicaciones y procesos a nivel de usuario, funcionan con un nivel de privilegios reducido. Al invocar una acción a través de sudo, únicamente se elevará el proceso asociado, y de forma temporal.

En esta guía de la wiki de Ubuntu se explican todas las ventajas de adoptar esta concepción, y utilizar sudo como método de elevación para acciones que requieres privilegios.

Root Habilitado. Uso de Su y/o PolicyKit

Hay otras distribuciones, como Debian, Fedora u openSUSE, que en el proceso de instalación te permiten asignar una contraseña a root, para que puedas hacer uso de él.

Cuando esto es así, delante de una acción que requiera permisos de superusuario, el sistema requerirá las credenciales de éste ultimo, para que pueda llevarse a cabo.

1. Uso permanente como usuario estándar (recomendable). Si estás en la sesión de usuario normal, el sistema funciona permanentemente bajo la cuenta de tu usuario estándar, y por tanto, todos las aplicaciones y procesos asociados se ejecutan con un nivel de privilegio reducido.

Usuario Estándar Intenta Realizar Acción que Requiere Privilegios

2. Acreditación para tarea que requiere privilegios. En este punto, cuándo el usuario requiere realizar una tarea administrativa, si es mediante la sesión gráfica, el sistema le pedirá las credenciales de root. Si es desde la terminal, deberá realizar la acción a través de su, e introduciendo nuevamente sus credenciales.

Saltar a Root con Su

3. Ejecución de la tarea. Si la contraseña es correcta, se lleva a cabo la tarea. Mediante sesión gráfica, PolicyKit permitirá la ejecución de los procesos como Root, solo temporalmente hasta finalizar la ejecución de la acción requerida.

Proceso Ejecutado Mediante Su

4. Finaliza tarea. Al finalizar la tarea, al haberla hecho mediante su, sigues teniendo una sesión abierta con posibilidad de realizar acciones como root. Por lo tanto, se requiere cerrar la sesión con un exit.

Cerrar Sesión de Su

Dicho esto, hay que tener en cuenta una serie de consideraciones relativas a este modo de operar:

  • Queda totalmente desaconsejado iniciar sesión con Root. Esto supondría que todos las aplicaciones y procesos de usuario estarían corriendo con el máximo nivel de privilegio, exponiendo gravemente el sistema ante cualquier bug que pueda haber en una aplicación. Esto por no hablar del daño que podría hacer cualquier virus o malware ejecutándose con permisos de administrador.
  • Para realizar tareas administrativas desde la sesión de usuario estándar, en sesión gráfica el sistema ya se encargara de pedir las credenciales. En la terminal de puede hacer uso de su.

4. En el Próximo Post

Y con esto llegamos al final de este post. Si llevas poco tiempo en Linux, espero que este post te haya ayudado a conocer mejor el usuario root y a comprender mejor el funcionamiento de los diferentes sistemas de control de privilegios.

En esta primera parte era básicamente de divulgación. Si tienes ganas de trastear con el sistema, en un próximo post verás como puedes probar tu mismo las diferentes concepciones que hemos visto, habilitando o deshabilitando el uso de root, o configurando sudo para adaptarlo a diferentes usos.

De hecho, una de las cosas buenas de GNU/Linux es justamente su enorme flexibilidad a la hora de parametrizar el comportamiento del sistema.

Si te ha gustado el post, siéntete libre de compartirlo por Facebook o Google Plus. Y si tienes cualquier duda, tienes la sección de comments debajo. Hasta la próxima!

Anuncios

Autor: Oriol

Soy un chico de Barcelona. Estoy aquí para compartir mis Hobbies e intentar aportar mi granito de arena a todos aquellos usuarios interesados en el mundo de la informática, internet y las tecnologías de la información en general.

3 comentarios en “El Usuario Root y el Control de Privilegios en Linux: Sudo, Su y PolicyKit”

  1. Necesito ayuda. Cuando meto en “su” la contraseña, me dice: su: Fallo de autenticacion y no me deja meterme en root.
    No hay otra contraseña pues solo he creado otro usuario. Como podria hacer para entrar en root? Muchas gracias.

    Me gusta

    1. Hola Enrique.
      Si tu distribución tiene root deshabilitado, aunque utilizes “su” no podrás entrar como superusuario (deberías habilitarlo primero). Si quieres habilitar root:

      sudo -i
      sudo passwd root

      Esto no quita que (si estaba configurado así de entrada) el usuario estándar pueda seguir realizando acciones de superusuario a través de “sudo”.

      Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.