root o sudo como un administrador

Una de las características mas interesantes de Linux es la jerarquía de permisos. Así, un usuario tiene permisos para hacer según que cosas, mientras que no podrá hacer otras. Esto te permite crear un entorno de trabajo mas seguro y confiable. A esto que acabo de comentar hay que añadir una excepción y es root.

¿Pero quien es ese root que yo no lo conozco? Este usuario es un usario privilegiado. Es un usuario que tiene derechos para hacer cualquier cosa. Probablemente, si ya llevas un tiempo, trabajando con Linux, ya sabŕas de quien te estoy hablando. Y por eso sabes, que en ocasiones, un usuario normal, puede escalar privilegios, hasta llegar a ser root para realizar determinadas tareas administrativas.

En este artículo, daremos un repaso general a las opciones que tiene un usuario para ganar privilegios de administración. Pero sobre todo, y lo que mas me interesa, es ver, como podemos hacer, para que un usuario pueda ejecutar determinadas acciones con derechos de administrador, pero sin indicar la contraseña.

Si te preguntas para que te puede ser útil, permitir que un usuario ejecute determinadas acciones sin solicitar contraseña, sigue leyendo que te lo explico mas adelante. Además te comentaré como puedes hacerlo para que lo tengas en mente para futuras ocasiones.

root

Como te he comentado en la introducción, un usuario normal no tiene los permisos necesarios para realizar todo tipo de acciones en Linux. Solo un usuario con privilegios de administrador, puede hacer cualquier cosa. Lo cual tiene toda la lógica del mundo. Sin embargo, en ocasiones, queremos acceder como root a nuestro sistema. Existen diferentes formas de ganar privilegios como vamos a ver en los siguientes apartados.

Registrarnos como Root

La primera es registrate como root en la sesión. Así, por ejemplo, si accedes via ssh a tu servidor, y lo quieres hacer con derechos de administrador, simplemente tendrás que registrarte como root. Para ello, tan solo tienes que ejecutar la siguiente línea,


ssh root@direccion_ip_del_servidor

Si no tienes claves SSH para el usuario root te pedirá su contraseña. Ojo, por que en este caso, te está pidiendo la contraseña de administrador, la contraseña de root.

Este procedimiento para ganar derechos de administrador es peligroso. Como te he comentado en la introducción, usuario root puede hacer cualquier cosa que se le antoje. Con lo qeu también es posible que cometa un error, y lleve al traste al sistema operativo. Por esta razón, no te recomiendo este procedimiento para ganar derechos de administrador.

su

La segunda de las opciones para ganar privilegios de root, es utilizando su. Este comando te permite cambiar de usuario sin necesidad de salir de la sesión actual. Ahora bien, tienes que tener cuidado, porque al hacer esto no cambias el entorno de trabajo. Sigues con el entorno de trabajo del anterior usuario. Si lo haces así, te puede suceder algo como lo que ves en el siguiente ejemplo,


[usuario1@pc ~]$ su usuario2
Contraseña:
[usuario2@pc usuario1]$
[usuario2@pc usuario1]$ ls
ls: no se puede abrir el directorio 'usuario1': Permiso denegado
[usuario2@pc usuario1]$
[usuario2@pc usuario1]$
cd [usuario2@pc ~]$

Si te fijas al hacer su, hemos cambiado de usuario1 a usuario2, pero sin embargo, se ha mantenido el entorno de usuario1. Así, cuando hemos intentado ver el contenido del directorio home de usuario1 nos ha arrojado un error.

Para evitar esto, es decir, para forzar el cambio del entorno, debemos utilizar la opción -l o - o --login. Las tres opciones son posibles.

Si ejecutas el comando su sin ningún argumento, o seguido de las opciones indicadas anteriormente -l o - o --login, directamente nos registraremos como root. Para registrarte necesitarás poner la contraseña de root.

Mientras que si lo haces seguido del nombre del otro usuario, te registrarás como si fueras ese usuario. Para hacer esto, tendrás que introducir la contraseña de este segundo usuario.

Como te puedes imaginar, para ganar privilegios de administrador utilizando su, el procedimiento mas adecuado es utilizar su -. Así, estarás en tu propio entorno, y te evitarás cometer errores.

Este procedimiento es algo mas seguro que el anterior, pero tampoco es que sea la panacea. Y digo que no es la panacea, porque somos susceptibles de cometer un error en cualquier momento.

sudo

El tercero de los procedimientos para ganar derechos de administrador es el uso de la herramienta sudo. Esta herramienta te permite ejecutar una orden en nombre de otro usuario. Si no indicas el nombre del otro usuario, estás ejecutando la orden como root. Así para ejecutar un comando como root tan solo tienes que ejecutar,


sudo comando

Al contrario de lo que sucede con su y sudo, en los que al ejecutar esos comandos, debías introducir la contraseña del usuario por el que te intercambiabas, en el caso de sudo tienes que introducir tu contraseña.

Pero ¿Cualquiera usurio puede ejecutar sudo? Evidentemente que no, en otro caso, no valdría para nada. Para definir, quien o quienes, pueden ejecutar sudo, tendrás que ejecutarlo a través de /etc/sudoers.

Pero ojo, no se te ocurra editar directamente /etc/sudoers, tienes que hacerlo utilizando el comando visudo. Esto es muy importante, porque una edición incorrecta de este archivo, puede crear problemas en tu sistema.

Con visudo lo que haces es que validar la sintaxis del archivo /etc/sudoers antes de guardarlo. Esto te evitará mas de un susto. Así, para modificar este archivo ejecutarás visudocon derechos de administración,


sudo visudo

La configuración del archivo /etc/sudoers

El archivo /etc/sudoers en mi equipo Ubuntu tiene el siguiente aspecto,


Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d</c ode>

En las líneas anteriores he quitado los comentarios para no meter tanta paja en este artículo. Por otro lado, indico lo que nos afecta, si necesitas mas información, te recomiendo visites algunas de las referencias indicadas a pie de artículo.

  • La línea root ALL=(ALL:ALL) ALL indica aplica a todos los hosts. Puede ejecutar como si fuera cualquier usuario. Puede ejecutar como si perteneciera a cualquier grupo. Aplica a todos los comandos.
  • Para el definir en lugar de un usuario un grupo, utilizamos la misma sintaxis que en el apartado anterior, pero anteponiendo un % al nombre del grupo. Por ejemplo, la línea %admin ALL=(ALL) ALL aplica al grupo admin.
  • La última línea #includedir /etc/sudoers.d no es un comentario. Lo que indica es que los archivos que se encuentran en ese directorio también son de aplicación.

Personalizando /etc/sudoers

Para simplificar nuestro trabajo, podemos definir alias. Tanto para grupos de usuarios, como para grupos de comandos, como para indicar en nombre de quien ejecutamos una orden. Por ejemplo,


User_Alias GRUPO = pepe, perico, andres Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart Runas_Alias WEB = www-data, apache<

En las líneas anteriores hemos creado un grupo llamado PEPE, formado por los usuarios indicados. Hemos creado un conjunto de órdenes, que nos permiten apagar y reiniciar nuestro equipo. Y hemos creado un grupo de usuarios en nombre de los cuales podemos ejecutar órdenes.

Así por ejemplo, si quieremos que nuestro grupo de usuarios pueda apagar o reiniciar el ordenador, añadiremos la siguiente orden a /etc/sudoers,


GRUPO ALL = POWER

De esta forma, cualquier usuario de los indicados anteriormente podrá utilizar las herramientas indicadas para gestionar el apagado del ordenador.

Por otro lado, existen algunas etiquetas que te permiten modificar el comportamiento de sudo, como son NOPASSWD, PASSWD o NOEXEC. Yo me voy a centrar en NOPASSWD que es la que nos interesa.

NOPASSWD nos permite ejecutar sudo sin necesidad de introducir la contraseña de nuestro usuario. Esto es muy interesante cuando no tienes posibilidad de introducir la contraseña.

Configuraciones interesantes de /etc/sudoers

A continuación encontrás algunas opciones a tener en cuenta para modificar /etc/sudoers, y que seguro te resultarán de utilidad o al menos te llamarán la atención,

  • miusuario ALL=(ALL) ALL podemos ejecutar cualquier comando como cualquier usuario y pertenciente a cualquier grupo.
  • Para restringir el comportamiento a los usuarios de una red particular, podemos hacerlo tal y como se define en las siguientes líneas,

Host Alias MiRed = 192.168.103.0/255.255.255.0

ljs”>

  • miusuario ALL = NOPASSWD:/bin/cat. Con esta línea permitimos al usuario miusuario que ejecute /bin/cat sin necesidad de introducir la contraseña.
  • miusuario ALL=NOPASSWD: /sbin/modprobe -av uvcvideo, /sbin/modprobe -rv uvcvideo nos permite cargar y descargar el módulo uvcvideo sin pedirnos contraseña.
  • miusuario ALL=NOPASSWD: /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart, permite al usuario miusuaro apagar o reiniciar el equipo, sin que sea necesario introducir la contraseña.
  • A modo de curiosidad, en la línea Defaults, al final, añade insults, precedido por una coma. Si lo haces, cada vez que te equivoques al introducir una contraseña Linux te insultará. Eso si, lo hará en un perfecto inglés.

Conclusión

Lo que nos ha quedado claro, tanto a ti, como a mi, es que sudo es la mejor manera de ejecutar órdenes con derechos de administrador. Si bien, seguir esta práctica tiene el problema de que es necesario configurar /etc/sudoers, para que se adapte a tus necesidades. Yo creo que vale la pena, no solo utilizar sudo si no configurar /etc/sudoers para que se adapte perfectamente a tus necesidades.

Así, si tu eres la única persona que utiliza tu equipo, tiene todo el sentido del mundo que te des permisos para apagar o reiniciar tu equipo. Lo mismo, con lo que he indicado para cargar o descargar los módulos de vídeo.


 

Más información,

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *