Ir al contenido principal

La terminal de GNU/Linux y algunos de sus comandos (II)


En este artículo continuaré explicando algunos de los comandos que se utilizan en la consola de GNU/Linux. Aunque antes explicaré un poco el tema de los permisos que me quedó pendiente de la entrada anterior.

En GNU/Linux todos los archivos y directorios tienen asociados una serie de permisos. Estos permisos se encuentran agrupados en tres secciones, que son: propietario, grupo y otros. Además, cada uno de los ficheros y carpetas tienen un propietario (dueño) y pertenecen a un grupo. 

Para ver los datos sobre el propietario, grupo y permisos de un archivo tenemos que ejecutar la orden ls -l (formato extendido del ls) que expliqué en el artículo anterior. Esta orden nos muestra una salida en la pantalla como la que se muestra en la figura:
Salida del comando ls -l
Como se puede observar en la salida del comando ls, empezando por la parte izquierda de cada línea se muestra la siguiente información: 
  • El primer carácter indica el tipo de archivo. Existen muchos tipos de archivos, pero los que generalmente nos van a interesar son dos: d, indica que corresponde con un directorio y -, que nos indica que se trata de un archivo. 
  • Un grupo de nueve caracteres que nos indican los permisos del archivo, agrupados de tres en tres para cada uno de estos actores:
    • Propietario: la mayoría de las veces, es el usuario que crea el archivo. Veremos que se puede cambiar de propietario un fichero.
    • Grupo: los usuarios en GNU/Linux tienen asignado al menos un grupo al que pertenecen, aunque lo normal es que pertenezcan a varios grupos. Los permisos de grupo asignados a un archivo conceden privilegios a todos los usuarios pertenecientes al mismo grupo al que pertenece el archivo.
    • Otros: este grupo de permisos concede o revoca privilegios sobre el archivo a otros usuarios que no pertenezcan al grupo del fichero o que no sean propietarios del mismo.
  • El número que aparece a continuación corresponde a la cantidad de enlaces duros que tiene ese archivo. En este artículo no voy a explicar que es eso, ya que el tema de los enlaces debería llevar un artículo por sí mismo. 
  • El nombre que aparece a continuación corresponde al del propietario del archivo.
  • Seguidamente aparece el grupo al que pertenece el archivo.
  • La columna siguiente corresponde al tamaño del archivo.
  • Fecha y hora de la última modificación.
  • Nombre del archivo.
En cuanto a los permisos que se pueden conceder o revocar asociados a un fichero o directorio, hay que especificar que los hay de tres tipos. Éstos son: 
  • r: si aparece en la línea es que el archivo tiene permiso de lectura. En el caso de que sea un directorio quiere decir que se permite la lectura del contenido del escritorio.
  • w: este corresponde a un permiso de escritura en el caso de que sea un archivo. Si se trata de un directorio, indica que se permite la eliminación de  ese directorio.
  • x: este es el permiso de ejecución. Todos los archivos ejecutables, binarios y/o scripts de comandos (archivos por lotes), deben tenerlo para poder ejecutarse. Si se trata de un directorio, lo que permite este permiso es el acceso a él.
  • -: si aparece este símbolo es que el permiso que correspondería en la ubicación en la que está ha sido revocado o, más bien, no se ha concedido. 
Una vez que hemos visto el tema de los permisos, vamos a explicar algunos de los comandos que nos ayudarán en la gestión de los mismos. Asumiremos que cuando ejecutemos estos comandos seremos o bien el propietario del archivo o archivos sobre los que se van a aplicar, o bien, el superusuario.
  • chown (del inglés change owner): este comando permite cambiar el propietario del archivo o directorio. También permite cambiar el grupo. Tiene varias opciones, pero la más importante es -R ya que aplica el comando recursivamente. Veamos unos ejemplos:
    $chown pepito /home/usuario/miarchivo.txt
    Esta orden establecería como propietario del archivo /home/usuario/miarchivo.txt al usuario pepito.
    $chown -R pepito:users /datos
    Este comando establece como usuario a pepito y como grupo a users al directorio /datos y todo su contenido de forma recursiva.
  • chgrp (del inglés change group): cambia el grupo asignado a un archivo o directorio. Este comando también dispone de varias opciones, pero la más común a la hora de usuarlo sigue siendo -R para aplicarlo recursivamente. Ejemplos:
    $chgrp users /home/usuario/miarchivo.txt
    Este comando aplica el cambio de grupo al archivo /home/usuario/miarchivo.txt asignándoselo al grupo users.
    $chgrp -R users /datos
    Esta orden cambia recursivamente el grupo al directorio /datos y todo su contenido.
  • chmod (del inglés change mode): cambia los permisos de un archivo o directorio. Si se aplica con el modificador -R, los cambios se aplican recursivamente. La sintaxis de este comando es la siguiente:
    chmod [opciones] {ugoa}{+-}{rwx} ARCHIVO
    Ahora explicaremos con más detalle esta sintaxis:
    • ugoa: corresponde al grupo de permisos sobre los que se va a aplicar el comando: u, si se trata de aplicarlos al usuario; g, si se trata de aplicarlos al grupo; o, si se aplican sobre otros y a si se aplica a todos.
    • +-: el signo indicará si se asigna (+) o se elimina (-) el permiso.
    • rwx: el tipo de permiso que se va a aplicar.
    • La utilización de este comando es bastante más complicada de lo aquí explicado. Pero con esto basta para entender su funcionamiento y empezar a utilizarlo.
      Ahora veremos unos ejemplos que ilustrarán el uso de este comando.
      $chmod a+rw /datos/mifichero.txt
      Esta orden aplicará los permisos de lectura (r) y escritura (w) sobre el fichero /datos/mifichero.txt a todos. Es decir, al usuario, al grupo y a otros.
      $chmod -R go-x /datos
      Este comando eliminará el permiso de ejecución (x) al directorio /datos y todo su contenido para el grupo y otros. Si el usuario tiene permiso de ejecución, éste no será eliminado.
      Puedes crear un archivo de prueba e ir intentando diferentes combinaciones para ver cómo se van aplicando y revocando los permisos sobre él.

Bueno, esto es todo lo que ha dado de si este artículo. Espero que les sirva para aprender a utilizar la consola de GNU/Linux.

Comentarios

Entradas populares de este blog

Gestión de la red usando la línea de comandos (II): rutas persistentes

  Introducción Esta será la segunda entrada de la serie de artículos referentes a la gestión de la red en la línea de comandos de Linux. Concretamente, en esta entrada voy a explicar tres métodos para dejar configuradas rutas persistentes en nuestro Ubuntu. Las pruebas de campo las he hecho en una máquina virtual con Ubuntu Desktop 22.04 instalado. Pero lo explicado es válido para cualquier sabor de Ubuntu, incluido el Ubuntu Server. Ejecutar una tarea programada En Linux en general y, por tanto, también en Ubuntu, existe la posibilidad de programar tareas. Las tareas son ejecutadas por el demonio cron  y tienen que ser definidas usando el comando crontab . Para conocer más sobre el sistema de programación de tareas programadas les recomiendo mirar las páginas del manual: man cron , man crontab , man 5 crontab ... En este último se explica la estructura de un fichero crontab . Lo primero que tenemos que hacer es crear nuestro script que luego se ejecutará en la programación de...

Gestión de la red usando la línea de comandos (I)

Introducción Hola, amigos. Hoy vamos a hablar algunas de las utilidades de red en línea de comandos que se pueden utilizar en Ubuntu . Los que llevamos tiempo en este negocio de la administración de sistemas estábamos acostumbrados a utilizar las net-tools , que nos proveen de comandos como ifconfig , route , hostname , netstat  y otros. Toda una colección de programas para el trabajo de administración de la red en Linux / Ubuntu . Debido a los avances en el desarrollo de los kernels de Linux, estas utilidades han ido quedando desfasadas y un nuevo conjunto de utilidades más completas han ido apareciendo para sustituirlas. Estas alternativas han estado ahí desde hace tiempo, pero muchos no nos hemos dado cuenta pues seguíamos usando las viejas net-tools . De hecho, en la propia distribución Ubuntu 22.04 ya no vienen instaladas las net-tools  por defecto. Aunque siempre las puedes instalar desde los repositorios oficiales con el comando apt . En esta serie de artículos inten...

Instalar Code::Blocks en español

Introducción Code::Blocks es un IDE libre diseñado para la programación de C, C++ y FORTRAN construido para proveer las necesidades más demandadas por sus usuarios. Está diseñado para ser muy extensible y totalmente configurable. Está diseñado a partir de un marco de trabajo de extensiones, por lo que puede ser ampliado mediante la instalación de las mismas. De hecho, las funcionalidades de compilación y depuración son extensiones. En este artículo, voy a explicar como instalar el Code::Blocks en un sistema con el Ubuntu 21.10 instalado. La versión de Code::Blocks que hay en los repositorios es la 20.03. Además, explicaré como poner su interfaz en español. Instalando pre-requisitos En primer lugar hemos de asegurarnos que tenemos instalados el compilador y las herramientas de depuración. Por lo que ejecutaremos en una terminal $sudo apt install build-essential gdb Con esto ya es suficiente para el C y C++. Instalando el paquete de Code::Blocks En una distribució...