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

Añadir disco en caliente a un Ubuntu virtualizado

  En este artículo vamos a explicar cómo aumentar un volumen de discos en una máquina virtual. Pongamos por caso que tenemos un servidor que se nos ha quedado corto de espacio en disco y que no podemos parar. La solución es añadir un nuevo disco virtual a nuestra máquina y, con ese espacio añadido, extender el volumen de discos.  En principio, este es un proceso en el que no hay pérdida de datos. Sin embargo, es conveniente que exista una copia de seguridad antes de llevarlo a cabo como precaución. He de decir que yo lo he hecho en un par de ocasiones y no ha habido problemas con la máquina virtual ni con los datos. De hecho, los usuarios ni se enteraron de que se amplió el espacio en disco. Consideraciones iniciales En primer lugar, este es un proceso que sólo se puede llevar a cabo en una máquina virtual. Para añadir un disco nuevo en una máquina física hay que pararla y, por lo tanto, no se puede añadir en caliente. Cierto es que la parte de extender el volumen sí que se realiza igu

Atom ha muerto, viva Zed

El día 8 de junio de 2022, Microsoft anunció que a partir del día 31 de diciembre de este mismo año dejaría de dar soporte para el editor de código Atom .  ¿En qué nos afecta esto a nosotros? Bueno, pues si me han seguido en artículos anteriores saben que tras una comparativa de varios IDEs había decidido utilizar Atom para los ejemplos que tuviera que hacer en este blog. Sobre todo los artículos que prepararé para ilustrar el uso de Laravel . Amén de los miles de programadores que actualmente usan Atom  en sus proyectos, claro. Pero, ¿qué editor de código abierto podremos utilizar para sustituir a Atom ? En el mismo comunicado, Microsoft explicaba que el abandono del proyecto Atom  se debía a que querían volcar todos sus esfuerzos en el Visual Studio Code y, por supuesto, recomendó a los usuarios de Atom la utilización del mismo como alternativa natural. No quiero entrar en las bondades o defectos del Visual Studio Code  si quieres elegirlo como tu IDE para desarrollo predeterm

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 programación.