Linux

Cómo se estructura el sistema de archivos en Linux

En los sistemas Unix, todo lo que puede ser manipulado por el sistema operativo está representado bajo la forma de archivo, incluyendo ahí directorios, dispositivos y procesos.

En este artículo, abordamos los principales conceptos acerca de los archivos y directorios en Linux.

Linux sigue el estándar POSIX, el mismo que es utilizado por otros sistemas operativos derivados de Unix. De esta forma, conociendo Linux, no tendrás dificultades en operar otros sistemas como HPUX, FreeBSD, Solaris, etcétera, que así como Linux, están basados en Unix.

También, debido al gran número de distribuciones de Linux que existen, fueron determinados patrones sobre la estructura de Linux y la forma de manipular los archivos.

Estos estándares constituyen la Linux Standard Base (Base Estándar de Linux), o simplemente LSB. La LSB contiene todas las características que un sistema Linux debe adoptar, para mantener un nivel de compatibilidad entre las diferentes distribuciones.

Archivos en Linux

Se suele definir el archivo como el lugar donde escribimos nuestros datos. En otros sistemas operativos se hace una distinción entre archivos, directorios, dispositivos y otros componentes del sistema. En GNU/Linux, sin embargo, todo aquello que puede ser manipulado por el sistema es tratado como un archivo.

Pero, si todo es un archivo, ¿el sistema operativo hace la distinción entre archivo regular, directorio, dispositivo, procedimiento, etcétera? Muy simple: todo archivo tiene lo que se llama “encabezado”, que contiene información como: tipo, tamaño, fecha de acceso, modificación, y más. A través de este encabezado, GNU/Linux sabe cuándo se trata de un archivo regular, directorio, dispositivo, y así sucesivamente.

Tipos de archivos en Linux

Los tipos de archivos existentes en un sistema GNU/Linux son los siguientes:

1. Archivo regular: tipo común que contiene datos solamente. Los archivos regulares pueden ser de los más variados tipos, cumpliendo con los más diferentes tipos de información. Hay archivos de audio, vídeo, imagen, texto, y mucho más. Los archivos se dividen en 2 categorías principales:

a. Binarios: los archivos binarios están formados por bits 1 y 0 y solo pueden ser interpretados por el sistema operativo, siendo incomprensibles por nosotros los humanos. Si un archivo binario se abre en un editor de textos, aparecen varios símbolos extraños. Programas y bibliotecas son ejemplos de archivos binarios.

Sistema de archivos de Linux

b. Texto: los archivos de tipo texto están compuestos por información en forma de texto, que pueden ser entendidos por el usuario común. Archivos de ese tipo no necesariamente contienen el texto propiamente dicho. Cuando se dice que un archivo es del tipo de texto estamos queriendo decir que, si lo abrimos con un editor de texto, se mostrará información legible.

2. Directorios: los directorios son utilizados para separar un grupo de archivos de otros. Un directorio puede contener archivos y otros directorios, que serán llamados subdirectorios.

3. Dispositivos: todo componente de hardware instalable es llamado dispositivo. Placas de vídeo, sonido, red, unidades de CD-ROM, todo lo que se conecta a la interfaz USB y la memoria RAM, son considerados dispositivos. Los dispositivos pueden ser:

a. De bloque: los dispositivos de bloque utilizan el búfer de lectura/grabación. Generalmente son unidades de disco, como HD’s, CD’s, etcétera.

b. De caracter: estos dispositivos no utilizan el búfer de lectura/grabación. La mayoría de los dispositivos PCI y otros dispositivos como impresoras, ratón, etcétera son de tipo caracter.

c. Fifo: se trata de un canal de comunicación, a través del cual se pueden ver los datos que están transitando por un dispositivo.

4. Enlaces: los enlaces son archivos utilizados para hacer referencia a otro archivo ubicado en otro lugar. En otras palabras, son accesos directos. Los enlaces pueden ser de 2 tipos:

a. Simbólicos: hacen una referencia al archivo a través de su dirección lógica en el disco o la memoria. Son los enlaces más comunes.

b. Absolutos: hacen referencia al archivo a través de su dirección física en el disco duro o la memoria.

5. FIFO: canal de comunicación que se utiliza para dirigir los datos producidos por procesos a otro proceso.

Te recomendamos la lectura:  Lanzamiento oficial del Linux Kernel 5.1, esto es lo nuevo

Los archivos pueden contener diferentes tipos de información. Cada tipo de información requiere un método específico de trabajo. Así, un archivo de imagen no puede ser leído por un programa de reproducción de audio, porque los datos de un archivo de imagen se organizan de forma totalmente distinta a la de un archivo de audio, y el programa en cuestión solo es capaz de leer archivos de audio.

Con esto en vista, es necesario que el sistema operativo y otros programas puedan distinguir los distintos tipos de archivos disponibles, para evitar que un programa intente manipular un tipo de archivo que no soporta.

GNU/Linux hace esta diferenciación a través de la lectura del encabezado del archivo. Así, la extensión del archivo en general no importa al sistema operativo, se utiliza tan solo para una fácil identificación del usuario, motivo por el cual es muy común encontrar archivos sin extensión en GNU/Linux.

Nombres de archivos

Los nombres de archivos en GNU/Linux pueden tener hasta 255 caracteres, pudiendo utilizar los espacios y acentos. Hay una excepción solo en cuanto al uso de los caracteres especiales / \ | » * ? < > ! `.

Un punto muy importante que debe ser moldeado es que GNU/Linux es case sensitive, es decir, distingue entre mayúsculas y minúsculas. Siendo así, los archivos file.iso y File.iso son diferentes para GNU/Linux. Por lo tanto, cuando te refieras a un archivo, asegúrate de escribir con la interpretación correcta.

Directorios

Los directorios, como seguramente sepas, contienen archivos u otros directorios. Todo sistema operativo contiene lo que se llama “árbol de directorios”, que es una estructura básica de directorios y subdirectorios.

En GNU/Linux, el árbol de directorios está particularmente muy bien organizado, y los archivos se dividen en categorías. Así, los archivos ejecutables (programas) son agrupados en un directorio determinado, mientras que las bibliotecas están archivadas en otro, y los archivos temporales en otro, y así sucesivamente.

Esto garantiza una buena organización del sistema y también trae una gran comodidad, como se verá más adelante.

Filesystem Hierarquy Standard

Los sistemas GNU/Linux tienen un patrón duro y específico al respecto de la organización jerárquica de los directorios, definido por Filesystem Hierarquy Standard, o simplemente FHS.

El directorio que contiene todos los demás directorios se llama directorio raíz y se encuentra en la parte superior de la estructura, siendo representado por el signo «/». Todos los demás directorios deben ser referenciados a partir de este, así como en /directorio.

Sistema de archivos de Linux

Dentro de la estructura del sistema de archivos, cada uno de los directorios posee una función específica, como vemos en la siguiente lista.

/bin/: aquí se encuentran los programas que se utilizan con frecuencia por los usuarios.

/boot/: archivos estáticos utilizados durante el arranque del sistema.

/dev/: encontramos aquí los dispositivos de hardware. Hay varios archivos, uno para cada dispositivo.

/etc/: en este directorio se encuentran los archivos de configuración del sistema y los programas instalados.

/home/: los usuarios registrados en el sistema tienen un directorio con su nombre dentro de /home. En general, es la única zona accesible a los usuarios para grabar sus archivos.

/lib/: las bibliotecas esenciales y los módulos del kernel de Linux se encuentran aquí. Las Bibliotecas son conjuntos de funciones y recursos utilizados por programas.

/media/: aquí se deben ingresar los puntos de montaje para medios extraíbles, como CD y disquetes.

/mnt/: directorio utilizado para la conexión con volúmenes presentes en otros equipos de la red o para acceder a los dispositivos extraíbles. En otras palabras, aquí se encuentran los puntos de montaje temporales.

/opt/: programas adicionales instalados de forma no estándar deben estar aquí.

/root/: directorio personal del usuario root, el administrador del sistema.

/sbin/: ubicación de los programas esenciales para el funcionamiento y mantenimiento del sistema. Solo el administrador (root) tiene permiso de ejecución de estos programas.

/srv/: datos de los servicios proporcionados por el sistema.

/tmp/: aquí se encuentran los archivos temporales generados por el sistema.

/usr/: los archivos accedidos por los usuarios se encuentran contenidos en este directorio, principalmente, los programas y los archivos utilizados por dichos programas.

Te recomendamos la lectura:  El entorno de escritorio LXQt 0.13 llega a Lubuntu 18.10

/var/: aquí se encuentran la información de las variables del sistema, como la cola de la impresora, cajas postales, logs del sistema, caché de programas, etcétera.

A continuación, la lista de algunos de los principales subdirectorios del sistema de archivos de GNU/Linux:

/etc/X11/: archivos de configuración del servidor X.

/etc/skel/: archivos grabados en el directorio personal del nuevo usuario.

/etc/network/: archivos de configuración de la red.

/lib/modules/: directorio de los módulos del kernel de Linux. Dentro del directorio modules existirá un subdirectorio para cada versión de kernel disponible en el sistema. El nombre de este subdirectorio será la versión del kernel correspondiente.

/media/floppy/: punto de montaje de la unidad de disco principal.

/media/cdrom/: punto de montaje de la unidad de CD-ROM principal.

/usr/bin/: programas utilizados por los usuarios.

/usr/lib/: bibliotecas utilizadas por los programas en /usr/bin.

/usr/share/: archivos compartidos, utilizados por los programas en /usr/bin.

/usr/include/: archivos utilizados para recopilar nuevos programas desde el código fuente.

/usr/sbin/: programas utilizados por el administrador del sistema.

/usr/src/: los códigos fuente de los programas deben estar aquí, incluyendo el del kernel de Linux.

/usr/X11R6/: programas, bibliotecas y demás archivos del servidor X.

/var/cache/: aquí se almacenan los archivos de caché utilizados por varios programas. Dentro del directorio cache/ se crean los directorios con el nombre de los procesos creadores.

/var/lock/: se utiliza para bloquear la ejecución de programas. Si dentro de este directorio hay un archivo con el nombre de un determinado proceso, no se podrá ejecutar.

/var/log/: archivos de registro generados por el sistema y otros programas.

/var/mail/: los mensajes enviados al usuario root y los mensajes de correo electrónico se almacenan aquí (requiere instalación).

/var/run/: datos de los programas en ejecución.

/var/spool/: directorio de spool de los procesos.

Paths

Como en todo sistema de archivos de cualquier sistema operativo, la referencia a un archivo/directorio debe ser hecha a través de su path. Un path se forma de la siguiente manera:

[directorio raíz] [directorio 1] [directorio 2] … [directorio n] [archivo]

Cada uno de estos elementos son separados por un símbolo, que varía de acuerdo con el sistema operativo.

En GNU/Linux, el directorio raíz se llama «/», y el símbolo utilizado para separar los elementos es / también. Un ejemplo de ruta sería:

/home/david/doc/cursos/linux/gnu.sxw

Un path informa dónde podemos encontrar un archivo o directorio. En el caso anterior, podemos interpretar este comando de la siguiente forma: el archivo gnu.sxw está dentro del directorio linux/, que está dentro del directorio cursos/, que está dentro del directorio doc, que está dentro del directorio david/, que está dentro del directorio home/, que está en el directorio raíz.

Otra forma de interpretación sería: para acceder al archivo gnu.sxw, a partir del directorio raíz, entrar en el directorio home/, luego al directorio david/, después al directorio doc/, después al directorio de cursos/ y luego en el directorio linux/, y el archivo estará allí.

Sistema de archivos de Linux

Notaciones de los directorios del sistema

Algunos de los directorios tienen notaciones especiales, algo que podríamos llamar un «atajo» para el acceso. A continuación puedes ver la lista de estas notaciones:

~: al referirse al directorio ~, el sistema lo entiende como el directorio personal del usuario, o sea, /home/[usuario], donde [usuario] es el nombre de inicio de sesión del usuario actual. De esta forma, si estás registrado como “webmaster”, el directorio ~/img será interpretado como /home/webmaster/img.

-: el kernel de Linux almacena un histórico de los directorios a las que accedemos. El “-” se refiere al último directorio de acceso.

.: el símbolo “.” se refiere al directorio actual, o sea, aquel en el que estamos trabajando.

..: se refiere al directorio por encima del cual estamos. Por ejemplo, considerando el directorio /home/webmaster/, el directorio por encima de webmaster/ es /home/, y el directorio encima de /home/ es /.

También te puede interesar: Qué son los DNS y para qué sirven.

Publicaciones relacionadas

Deja una respuesta

Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar mi política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected].

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

Acepto la política de privacidad *

Botón volver arriba