Linux

Como se estructura el sistema de archivos en GNU/Linux?

Seguramente, muchos de ustedes al igual que yo, aprendimos a usar los ordenadores con alguna versión de Windows y es probable que una de las primeras cosas con las que se familiarizaron fue la manera de administrar toda la información que mantenían almacenada en la misma o algún medio extraíble conectado al pc. Es decir, a realizar tareas como copiar, pegar, mover o localizar nuestros archivos. Por este motivo, en esta ocasión queremos mostrarte como se estructura el sistema de archivos en Linux / GNU. Ciertamente, no es necesario conocerlo al 100%, pero resultara muy útil tener una idea de la jerarquía de los archivos.

¿ Como se estructura el sistema de archivos en GNU/Linux ?

Los sistemas Linux residen bajo un árbol jerárquico de archivos, bastante parecido a como se estructura los sistemas Unix. En sus inicios, ese árbol jerárquico de directorios y archivos no estaban bajo ningún estándar, es decir, existían variaciones entre el de una distribución y otra. Fue esto lo que motivo a grupo de personas a desarrollar, en el año 1993, lo que se conoce como Filesystem Hierarchy Standard (FHS) o en español Estándar de Jerarquía de Sistema de Ficheros.

FHS

El FHS se define como el estándar que establece y brinda el detalle de los nombres, contenidos, ubicaciones y permisos de los archivos y directorios, en otras palabras, es el conjunto de reglas que determinan una estructuración común de archivos y directorios en los sistemas Linux. Este estándar no es más que un documento de guía, el cual puede ser consultado por los fabricantes y ser aplicado al momento de crear una nueva distribución.

Resulta importante aclarar que un fabricante puede decidir entre aplicarlo o no. La ventaja de integrarlo a su sistema Linux, es que este hará que su entorno sea mucho más compatible con el resto de las distribuciones en Linux. Otro punto a resaltar es que el estándar permite cierta flexibilidad, por lo tanto, existen ciertas libertades al momento de aplicar las reglas y de allí parte el hecho de que existen ciertas diferencias un poco leves entre diferentes distribuciones.

Objetivos principales de FHS

  • Exponer un sistema de archivos jerárquico con coherencia y de manera uniforme.
  • Brindar facilidad en el desarrollo de software, ya que permitirá una fácil predicción e identificación de archivos y directorios instalados.
  • Otorgar al usuario facilidad para predecirla localización de archivos y directorios en su ordenador.

Como vemos, el enfoque principal del FHS es la creación de sistemas operativos con estructuras lo más compatibles que sea posible. Lo que brindara una mejor experiencia a los usuarios comunes, ya que podrán entender el significado de cada elemento dentro del sistema y localizarlo con facilidad. Por otro lado, en el mismo FHS se manifiesta cuáles son los tipos de archivos que puede contemplarse en la estructura del sistema:

Archivos compartibles y no compartibles: Los primeros son archivos propios de un ordenador y los segundos son los archivos que pueden compartirse entre diferentes ordenadores. Por ejemplo:

  • Archivos compartibles: los contenidos en /var/www/html (que es el DocumentRoot por defecto del servidor Web Apache. Donde se almacena inicialmente el index.html de bienvenida).
  • Archivos no compartibles: los contenidos en /boot/grub/ (Subdirectorio donde se ubican los ficheros del gestor de arranque GRUB).

Archivos estáticos y variables: los estáticos son los requieren de la interacción del administrador del sistema para cambiar de estado. Y los variables aquellos que pueden cambiar sin dicha interacción. Para que entiendan mejor esto, veamos un ejemplo. Tenemos los archivos log del sistema (bitácoras), estos son del tipo variable, ya que son modificados constantemente sin la intervención del administrador, pues son mensajes generados por el kernel del sistema. Mientras que el resto de archivos donde se almacena información sensible como cuentas de usuarios, configuraciones o contraseñas, son del tipo estático.

Échale un vistazo a: Comandos Linux: conocer y manipular el sistema

Acceso a los diferentes sistemas de archivos

Sabiendo esta clasificación de los tipos de archivos, debemos saber también que en Linux todo es un archivo. Tanto el hardware como el software esta almacenando como un archivo de texto y es de allí que nace el concepto de “montar” o “desmontar” un dispositivo. Es decir, su estructura lógica, es independiente de la estructura del hardware, por lo tanto, no depende de si el ordenador tiene 1, 3 o 5 discos duros para crear las unidades c:\, e:\ o k:\.

Todo el sistema Linux tiene por origen la raíz o root, representada por / y bajo ese directorio se localizan todos los demás archivos accesibles en el sistema operativo. Por ejemplo, queremos acceder a un CDROM. Este es montado al sistema como un subdirectorio. En ese subdirectorio se localizará el contenido del dispositivo cuando se encuentre montado y no encontraremos nada en caso contrario. Para obtener la lista de dispositivos montados en el sistema, simplemente hacemos uso del comando mount en la consola. Es importante que este concepto quede claro para conocer el funcionamiento de Linux.

Como les mencione, también podemos ingresar a los dispositivos de hardware con este mecanismo, pero estos archivos son de tipo binario, es decir solo son interpretados por Linux. Por lo cual, si realizamos alguna edición corremos el riesgo de dejar el sistema inestable e incluso inutilizable. En definitiva, no es una opción acceder a ellos a menos de estar completamente seguros de lo que hacemos. Ahora que ya sabemos a nivel teórico como es su estructura. Veamos cómo es la aplicación del FHS en la vida real ?.

Estructuración del sistema de archivos en Linux según FHS

Directorio Descripción
/ Jerarquía primaria, denominado root o la raíz, directorio principal, contenedor del absolutamente todo el sistema de archivos en Linux.
/bin/ Contiene las binarias de comandos indispensables, para que estén disponibles bien sea para una sesión única o para multiusuarios. Se incluyen, por ejemplo, ls, cp, cat, mkdir, rm, entre otras
/boot/ El arranque del sistema.
/dev/ Contiene los accesos hacia los dispositivos. Tanto hardware o virtuales.
/etc/ En este se incluyen los archivos configurativos del sistema. Ha habido controversia respecto al significado de su nombre, pero Interpretaciones más recientes lo denominan como «Configuración de texto editable».
/etc/opt/ Archivos configurativos de los programas localizados dentro del directorio /opt.
/etc/X11/ Archivos configurativos del X Window System, versión 11.
/etc/sgml/ Archivos configurativos de SGML.
/etc/xml/ Archivos configurativos de XML.
/home/ Contiene los directorios de trabajo de todos los usuarios, excepto el del superusuario (administrador, root). Contiene archivos guardados, ajustes personales, etc. A menudo es instalada en un disco o partición separada. Cada usuario tiene su propio directorio dentro de esta carpeta.
/lib/ Se localizan todas las librerías fundamentales compartidas de los programas instalados incluyendo también las utilizadas por el núcleo.
/media/ Contiene los puntos de montaje de los medios extraíbles de almacenamiento.
/mnt/ Es similar a /media, pero normalmente utilizado por los usuarios. Con el fin de “montar” por ejemplo discos duros y particiones temporales.
/opt/ Contiene información de aplicaciones que no guardan las opciones de configuración en este directorio, es decir, los usuarios comparten la aplicación mas no las opciones de configuración de la misma.
/proc/ Contiene archivos que documentan el núcleo y el estado de sus procesos en específicos momentos.
/root/ Principal directorio del usuario root. Es como el /home pero para el superusuario (administrador) del sistema.
/sbin/ Ejecutables o binarios esenciales para el funcionamiento, comandos y programas exclusivos del administrador del sistema o usuarios que tengan permisos para hacer uso de ellos.
/srv/ Contiene los datos servidos por el sistema.
/tmp/ Contiene los archivos temporales.
/usr/ jerarquía secundaria de datos de usuario; contiene la mayoría de utilidades que son de propósito multiusuario pero que sin embargo son de solo lectura. Esta carpeta incluso puede ser compartida con otros usuarios de red local.
/usr/bin/ Comandos binarios no administrativos para todos los usuarios.
/usr/include/ Archivos de inclusión estándar.
/usr/lib/ Conjunto de librerías o binarios compartidos. Nunca hay dos librerías idénticas en el mismo sistema, lo cual optimiza el uso de memoria y provee mayor orden.
/usr/sbin/ Binarios que no son esenciales; por ejemplo, daemons para tener varios servicios de red.
/usr/share/ Contiene los datos que son compartidos pero que son independientes de la arquitectura.
/usr/src/ Contiene los códigos fuentes de algunas aplicaciones.
/usr/X11R6/ Directorio relacionado al entorno gráfico.
/usr/local/ Jerarquía terciaria para datos locales, es decir, específicos a este host.
/var/ Contiene los archivos variables del sistema, como logs, bases de datos, correo electrónico.
/var/cache/ Similar a /tmp, contiene la memoria cache de algunas aplicaciones.
/var/crash/ Contiene información referente a errores o caídas del sistema.
/var/games/ Es un directorio que no es imprescindible y su propósito es almacenar información referente a los juegos del sistema.
/var/lock/ Se localizan los archivos que tienen el estado de los recursos en uso.
/var/log/ Archivos de logs.
/var/mail/ Archivos de mensajes de usuarios, correos similares.
/var/opt/ Contiene los datos que pueden ser variables del directorio /opt.
/var/run/ Acceso a información desde el ultimo arranque del sistema. Por ejemplo, usuarios conectados en ese instante, o demonios en ejecución.
/var/spool/ Incluye las tareas que están en espera para procesar. Por ejemplo, correos no leídos o colas de impresión.
/var/spool/mail/ Localización de los correos de usuarios desaprobados.
/var/tmp/ Contiene archivos temporales, su diferencia con /tmp es el hecho de no borrarse al reiniciar el sistema.

estructura sistema de archivos en linux

Quizás te interese leer: Lo que necesitas saber sobre root, su y sudo en Linux

Permisos

Para cerrar el tema, en Linux, así como en otros sistemas Unix, se mantiene una política de permisos sobre los archivos. A fin de controlar el acceso, que pueden hacer sobre ello y quien puede hacerlo. Los permisos se identifican con letras y se establecen de esta manera:

  • r: permiso para lectura del archivo.
  • w: permiso para escritura del archivo.
  • x: permiso para ejecutar el archivo.
  • s: permiso para hacer cambios del propietario del archivo.

Así mismo, cada permiso en Linux, puede ser aplicado: para los dueños de archivos, al grupo que pertenece el dicho dueño o al resto de los usuarios. Lo cual permite que este mecanismo de seguridad funcione perfectamente en grupos de trabajo con diferentes responsabilidades (multiusuarios).

Yeraldine

Lcda. en Computación, Programadora, Apasionada por el Desarrollo Web. A veces Bellydancer, otras veces Yogui. Amo viajar, los libros y la música. En mis RRSS: @yerita02
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 Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba