El árbol de directorios

Estructura de directorios básica en GNU/Linux

Al examinar el contenido de nuestro disco duro mediante cualquiera de las utilidades gráficas de que dispone nuestra distribución de GNU/Linux (tomemos como ejemplo el navegador Konqueror de KDE), nos daremos cuenta de que existen muchos directorios cuyo nombre no nos sonará si tenemos cierta experiencia en los sistemas de Microsoft. En este caso, también observaremos que los directorios utilizan el carácter / en lugar del carácter \ para referirse a una ruta de subdirectorios anidados.

En GNU/Linux, todo tiene su reflejo en algún archivo o en algún directorio del sistema de archivos.

Los directorios de GNU/Linux pueden pertenecer a dos categorías distintas, según si se pueden o no compartir en un entorno de red, o si contienen datos estáticos o variables.

Pero desde el punto de vista del usuario, en GNU/Linux existen dos tipos de directorios: los directorios del sistema y el directorio del usuario.

 

Directorios del sistema

Los directorios del sistema son aquellos en los que se guardan todos los archivos que componen nuestro sistema operativo GNU/Linux. Es de capital importancia que ningún usuario que no disponga de los permisos adecuados pueda acceder a los archivos que componen nuestro sistema, ya que, de lo contrario, un usuario inexperto (por ejemplo) podría modificarlos o eliminarlos y hacer que todo el sistema se volviera inestable, o incluso inutilizable (como es el caso de los sistemas de Microsoft, donde la mera activación de un virus por parte de un usuario determinado vulnera la totalidad del sistema operativo y la seguridad y privacidad de los datos del resto de usuarios).

En una distribución GNU/Linux típica (como la Mandrake que utiliza el autor de este artículo) podemos encontrar los siguientes directorios del sistema:

/boot
Este directorio contiene la información necesaria para poder arrancar nuestro sistema GNU/Linux. Entre otros archivos, aquí se encuentran los núcleos que se pueden iniciar (normalmente se trata de archivos con un nombre similar a vmlinuz-x.y.z).
/etc
Este directorio contiene todos los archivos de configuración de nuestro sistema GNU/Linux (como el archivo passwd, que contiene una lista con los nombres de usuario y contraseñas, o el archivo fstab, que contiene una lista con los puntos donde se han montado las diferentes particiones y los sistemas de archivos que utilizan).
/bin
Contiene programas ejecutables (también llamados binarios) que forman parte del sistema operativo GNU/Linux. Estos comandos pueden ser usados por cualquier usuario y son relativos a la consola.
/sbin
Contienen programas ejecutables (también llamados binarios) que forman parte del sistema operativo GNU/Linux. Estos comandos son relativos a los sistemas de archivos, particiones e inicio del sistema, y solo pueden ser usados por el administrador.
/lib
Contiene las bibliotecas (o librerías) del sistema que son necesarias durante el inicio del mismo. Estas bibliotecas son análogas a los archivos DLL de Windows. Su ventaja reside en que no es necesario integrar su código en los programas que las usan, ya que cuando un programa necesita alguna de sus funciones, se carga la biblioteca en la memoria y puede ser usada por cualquier otro programa que la necesite, sin necesidad de volver a cargarla en memoria. Un subdirectorio especial es /lib/modules, que contiene los módulos del núcleo (normalmente se trata de controladores de dispositivos) que se cargan únicamente en caso de que haga falta usar un determinado dispositivo, por lo que no estarán permanentemente ocupando memoria.
/mnt
Este directorio es típico de las distribuciones RedHat, aunque puede no estar presente en otras distribuciones. Su misión consiste en agrupar en un mismo lugar los puntos de montaje de diversas particiones externas, como por ejemplo: CD-ROM, DVD, disqueteras, unidades ZIP, particiones de MS-Windows y de otros sistemas operativos, etc. Este directorio contiene un subdirectorio adicional para cada una de estas particiones (como /mnt/cdrom, /mnt/win_c, /mnt/floppy o /mnt/zip). Si accedemos a estos subdirectorios estaremos accediendo realmente a esas particiones.
/usr
Su nombre proviene de user (usuario) y, como tal, contiene una réplica de otros directorios de nuestro sistema GNU/Linux orientados al usuario en lugar de al propio sistema. Este directorio se puede compartir en una red local, pero su contenido es estático.
/opt
Contiene paquetes de software adicionales, como por ejemplo KDE o GNOME. Algunas distribuciones no hacen uso de él.
/var
Su nombre procede de variable, y esa es la naturaleza de la información que contienen sus subdirectorios y archivos, como colas de impresión (en /var/spool/lpd), correo electrónico que todavía no se ha recogido (en /var/spool/mail) o enviado (en /var/spool/mqueue), o archivos de registro creados por los distintos procesos de nuestro sistema (en /var/log).
/tmp
Este directorio contiene diversos archivos temporales que son usados por distintos programas de nuestro sistema.
/dev
Este directorio contiene archivos de dispositivos que permiten la comunicación con los distintos elementos hardware que tengamos instalados en nuestro sistema. Entre los distintos dispositivos que aquí podemos encontrar están los discos duros (como /dev/hda o /dev/sda), las particiones de los discos duros (como por ejemplo /dev/hda1 o /dev/sda4), las unidades de CD-ROM SCSI (como /dev/scd0) y los vínculos a cualquier tipo de unidad de CD-ROM (como /dev/cdrom), las disqueteras (como /dev/fd0), las impresoras (como /dev/lp0), los puertos serie (como /dev/ttyS0 o /dev/cua0), el puerto PS/2 (/dev/psaux) y las tarjetas de sonido (como /dev/audio).
/proc
Contiene los archivos del sistema de archivos de proceso. No son verdaderos archivos, sino una forma de acceder a las propiedades de los distintos procesos que se están ejecutando en nuestro sistema. Para cada proceso en marcha existe un subdirectorio /proc/<número de proceso> con información sobre él.
/root
Este es el directorio personal del usuario root o superusuario. Contiene básicamente la misma información que los directorios personales de los distintos usuarios del sistema, pero orientada única y exclusivamente al usuario root.
/home
Aquí residen los directorios de los distintos usuarios del sistema, excepto el del usuario root, que se encuentra en el directorio especial /root. Este directorio es opcional, aunque está presente en casi todas las distribuciones.

 

La jerarquía /etc

Este directorio posee distintos subdirectorios que se utilizan para la configuración de determinados componentes de nuestro sistema:

/etc/opt
Contiene los archivos de configuración para el software instalado en el directorio /opt. Cada paquete de software tendrá su correspondiente subdirectorio dentro de /etc/opt.
/etc/X11
Contiene los archivos de configuración del entorno gráfico X Window. Entre otras cosas, contiene los gestores de ventanas y de arranque de los distintos escritorios gráficos. Este directorio es opcional.
/etc/sgml
Contiene los archivos de configuración para SGML y XML. Este directorio es opcional.

 

La jerarquía /usr

Este directorio contiene distintos subdirectorios:

/usr/bin
Contiene casi la totalidad de los comandos que un usuario puede necesitar.
/usr/include
Contiene los archivos de cabeceras usados por los programas escritos en el lenguaje C.
/usr/lib
Contiene las bibliotecas de usuario.
/usr/local
Contiene la jerarquía local de usuario, con los subdirectorios típicos /bin, /include, /lib, /sbin, etc. Tras la instalación de un sistema GNU/Linux, este directorio estará vacío.
/usr/sbin
Contiene los archivos binarios (ejecutables) no vitales del sistema usados por el administrador.
/usr/share
Contiene archivos de datos independientes de la arquitectura del sistema, como documentación, howtos, etc. Aquí se encontrar los subdirectorios /man (que contiene manuales de programas) y /misc (que contiene diversos datos independientes de la arquitectura). También se pueden encontrar los subdirectorios /dict, /doc, /games, /info, /locale, /smgl, zoneinfo, etc.
/usr/X11R6
Contiene todos los programas que componen el entorno gráfico X Window (binarios, bibliotecas y páginas man, por lo que encontraremos directorios como /usr/X11R6/bin /usr/X11R6/lib y /usr/X11R6/man). Este directorio es opcional.
/usr/games
Contiene los archivos binarios de muchos juegos y programas educativos. Este directorio es opcional.
/usr/src
Contiene el código fuente del núcleo de GNU/Linux. Este directorio es opcional.
/usr/local
Como en el resto de sistemas operativos UNIX, GNU/Linux está diseñado para ser usado en entornos de red, por lo que es bastante frecuente que el directorio /usr no se encuentre en el ordenador local, sino en un servidor. Por ello, el directorio /usr/local está destinado a contener el software que se instale localmente en cada ordenador, y contiene subdirectorios similares a los que se puede encontrar bajo /usr (como /usr/local/bin, /usr/local/sbin, /usr/local/lib, /usr/local/man, etc.). Adicionalmente, encontraremos un directorio /usr/local/etc con idéntica funcionalidad al directorio /etc. Aunque use su ordenador de forma aislada y no en un entorno de red, este es el directorio en el que debería instalar sus programas.

 

La jerarquía /var

Este directorio también posee una estructura típica de subdirectorios:

/var/cache
Contiene datos de aplicaciones en cache, como archivos del servidor web y páginas de manual.
/var/lib
Contiene información de estado variable.
/var/log
Contiene registros creados por diversos programas y por el propio sistema operativo.
/var/run
Contiene datos relevantes para algunos procesos que se están ejecutando.
/var/spool
Contiene datos encolados de diversas aplicaciones, como correo electrónico del sistema y colas de impresión.
/var/tmp
Contiene datos temporales que deben ser preservados entre reinicios del sistema.

 

El directorio del usuario

En un sistema GNU/Linux, cada usuario dispone de su propio directorio personal donde puede guardar los documentos creados por él con los distintos programas. Este directorio personal puede ser de acceso exclusivo para cada usuario, por lo que ningún otro usuario podrá entrar en él y visualizar el contenido de los archivos que contiene (aunque esto depende del nivel de seguridad seleccionado durante la instalación del sistema, ya que lo normal suele ser que el resto de usuarios puedan entrar en él y ver el contenido de algunos archivos y subdirectorios, pero no modificarlo).

Los directorios personales están ubicados en /home/<nombre de usuario>. El usuario root sí dispone de los permisos suficientes para acceder a los directorios personales del resto de usuarios.

 

Otros directorios

Algunas distribuciones hacen uso de otros directorios adicionales que suelen montar en el directorio raíz:

/media
Es un directorio análogo al estándar /mnt, y contiene los puntos de montaje de los dispositivos extraíbles.
/windows
Algunas distribuciones lo crean si detectan un sistema Microsoft Windows instalado en nuestro equipo, creando dentro de éste tantos subdirectorios como particiones de Windows tengamos (como /windows/C, /windows/D, etc.). Contiene el punto de montaje de estas particiones.
/srv
Aquí se alojan los directorios que usan los distintos servidores que tengamos instalados, como el servidor web (en /srv/www) o el servidor FTP (en /srv/ftp).

Estos directorios no forman parte del estándar FHS, por lo que deberían ser evitados.

Enlaces relacionados

  • FHS
    Estándar de jerarquía de sistema de ficheros usado por GNU/Linux.