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

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 d...

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 ...

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...