Ir al contenido principal

El comando "sudo"

En la entrada anterior di por supuesto que todo el mundo conocía el comando sudo, fallo mío. En esta entrada voy a explicar qué es y como se utiliza y así remediar este error.

El comando sudo, del inglés superuser do, es un comando que se utiliza para permitir a un usuario ejecutar programas y/o comandos con los privilegios de otro usuario, generalmente del usuario root (superusuario). El usuario root es el administrador del sistema, el que tiene acceso a todas las partes del sistema operativo y, por lo tanto, cuando se utiliza se debe saber qué se está haciendo en cada momento, no vaya a ser que destrocemos el sistema operativo y el ordenador quede inutilizado.

Este comando se utiliza en una ventana de terminal, que es la línea de comandos que se utiliza en GNU/Linux. A la terminal también se le denomina consola o intérprete de comandos. Aunque la mayoría de distribuciones de GNU/Linux, Ubuntu incluida, tienen soporte gráfico y muchos de los programas permiten la configuración utilizando aplicaciones gráficas, es imprescidible para el usuario de GNU/Linux conocer la consola y la forma de trabajar con ella.

Terminal de GNU/Linux
Se por experiencia que el usuario medio de ordenadores se siente intimidado a la hora de usar el intérprete de comandos. Ese, en mi opinión, es un miedo que hay que vencer y la mejor forma de hacerlo es empezar a usar la consola sin ningún tipo de prejuicio.

Cuando se utiliza el comando sudo, lo primero que hace el sistema es requerir la contraseña del usuario que lo está usando con el fin de autentificarlo (configuración por defecto). Una vez hecho esto, el sistema verifica si el usuario tiene permitida la ejecución del comando o programa que se intenta ejecutar. Para realizar esa verificación se miran las reglas contenidas en el fichero de configuración de sudo, el /etc/sudoers.


Una vez que el usuario se ha autentificado dispone de un período corto de tiempo en el que puede ejecutar el comando sudo sin que le sea requerida de nuevo la contraseña. En la configuración por defecto este período es de 15 minutos. Si se utiliza la opción -v, sudo amplia el tiempo de expiración otros 15 minutos, para lo cual requerirá la contraseña del usuario si es necesario. 


Si un usuario que no está en el fichero sudoers intenta ejecutar un comando utilizando sudo, un correo se envía a la autoridad que se ha definido como tal a la hora de configurarlo o en el propio fichero sudoers (por defecto, root). Esto no se aplica si el usuario lanza el comando con la opción -l o -v, permitiendo al usuario determinar por sí mismo qué tiene permitido y qué no.


Los intentos con éxito y los fallidos, que son tratados como error, pueden quedar registrados por syslog (que es un programa de registro de actividad del sistema) o en un fichero de registro definido en el fichero sudoers, o bien por los dos a la vez. Por defecto sudo utiliza syslog.


Generalmente se ejecuta el comando sudo seguido del comando o programa que se quiere ejecutar con los privilegios de otro usuario (tal y como lo describo con los privilegios de root). Por ejemplo:

$sudo cp "nombre archivo" /etc
Esta orden copia el fichero "nombre archivo" al directorio etc en el que solo puede escribir el superusuario.
$sudo service samba restart
Esta otra orden reiniciaría el servidor samba, que es un servidor para la compartición de archivos y que sólo puede ser reiniciado por root.

Si se van a realizar gran cantidad de tareas administrativas puede ser pesado el tener que escribir sudo precediendo cada comando. La opción -i permite entrar en una sesión de root con todos sus privilegios y variables de entorno, por supuesto, tras pedir la contraseña del usuario:

$sudo -i
Existen multiples opciones que se pueden consultar en el manual que viene con toda distribución de GNU/Linux. Para consultar el manual de sudo hay que ejecutar en la consola la orden:

$man sudo
Es conveniente, cuando se utiliza cualquier comando de GNU/Linux, consultar la página del manual si se tiene alguna duda. La mayoría de las páginas del manual se encuentran traducidas al español; pero, con seguridad, más de una vez encontrarán que sólo están en inglés. Esto no debe desanimar al osado usuario de GNU/Linux, no es más que otro desafío.

La edición del fichero sudoers nunca debe hacerse directamente con un editor de texto. Debido a lo delicado del tema de las autorizaciones (se puede, incluso, dejar inútil el sistema si este fichero queda mal), la edición de sudoers siempre se ha de hacer invocando la orden visudo

$sudo visudo
Esta orden, además de la edición del fichero, comprueba la sintaxis antes de grabarlo, con lo que nos aseguramos que lo que se haya cambiado se ha hecho bien. El comando visudo abrirá el fichero sudoers con el editor de texto por defecto, en la versión de Ubuntu 11.10 este editor es el nano.

Con esto acabo y, como siempre, espero que este artículo sirva de utilidad. Hasta pronto.

Comentarios

Entradas populares de este blog

Gestión de la red usando la línea de comandos (IV): monitorización de conexiones

  Introducción En este artículo de la serie de gestión de la red usando la línea de comandos nos vamos a centrar en la monitorización de las conexiones. Para ello vamos a utilizar el comando netstat , que es el decano de los comandos de monitorización de la red. También mostraremos el comando ss , que viene a sustituir a netstat  en las funciones de monitorización de conexiones de red. Asimismo mostraré una breve explicación de los conceptos que se van a trabajar en el artículo. S ockets, puertos, protocolos y procesos En primer lugar vamos a empezar con un poco de teoría para alumbrar lo que luego se explicará en el artículo. Si ya sabes de lo que estamos hablando, sáltate esta sección y ve al meollo del asunto [1] . Nos referiremos al contexto de la conexiones TCP/IP. Dentro de este contexto, cada conexión queda definida por dos endpoints , puntos finales, uno en el host , equipo, que establece la conexión y otro en el host con el que se comunica. Generalmente este último es...

Zed: ahora un editor de código de código abierto

  Zed: ahora un editor de código de código abierto Introducción Como ya les comenté en un artículo anterior  Atom ha muerto, viva ZED , Microsoft dejó de dar soporte para el editor de código Atom en el año 2022 en beneficio del Visual Studio Code . En aquel artículo les comentaba que para mi el sucesor de Atom era Zed pues era un editor que se estaba creando por el mismo grupo de trabajo que creó el Atom . Además de que parecía que iba a seguir con la misma filosofía con la que nació  Atom . El editor Zed, una descripción de sus características Zed es un editor de código desarrollado en Rust que, como deberíamos saber, es un lenguaje de programación de sistemas que se enfoca en la seguridad, el rendimiento y la concurrencia. Pues, como decíamos, Zed acaba de dar el salto a ser de código abierto bajo la licencia GPL v3 . Este cambio no solo representa una nueva era para Zed , sino que también nos dirige a un nuevo mundo de colaboración y desarrollo en el ámbito de la...

Gestión de la red usando la línea de comandos (III): gestión DNS

  Introducción En este nuevo artículo de la serie vamos a hablar de la gestión del DNS, Domain Name System. El sistema de resolución de nombres nos permite traducir los nombres de los dominios de Internet en direcciones IP númericas. Más difíciles de recordar para los humanos.  El DNS fue concebido a mediados de los años 80. Hasta esa época, los ordenadores conectados a una red disponían de una dirección numérica, la dirección IP. Pero con el tiempo, cada vez había más ordenadores conectados a las redes. Esto hacía que cada vez fuera más difícil recordar las direcciones IP. Sobre el año 1983, Paul Mockapetris , un informático estadounidense, desarrolló un sistema jerárquico de nombres para identificar a los ordenadores conectados a una red. Y, a mediados de la década, ya se convirtió en un estándar. Pueden consultar más información sobre el sistema DNS consultando el artículo de la Wikipedia: Sistema de nombres de dominio . En este artículo, no vamos a explicar como montar un ...