3.2. Vista preliminar del estándar de jerarquía del sistema de archivos (FHS)

Red Hat está comprometido a respetar el Estándar de Jerarquía del Sistema archivos (FHS del inglés Filesystem Hierarchy Standard), un documento de consenso que define los nombres y la ubicación de muchos archivos y directorios.

El documento que define el FHS es la referencia autorizada para cualquier sistema compatible FHS, sin embargo el estándar da pie a la extensibilidad de unas áreas o no define otras. En esta sección se proporciona un resumen del estándar y una descripción de aquellas partes del sistema de archivos que no cubre el estándar.

El estándar completo está disponible en:

http://www.pathname.com/fhs

El cumplimiento del estándar significa varias cosas, los dos aspectos más importantes son la compatibilidad con otros sistemas que siguen el estándar y la capacidad de poder montar la partición /usr en modo sólo lectura pues contiene ejecutables comunes y no está pensado para ser alterada por los usuarios. Por este motivo, /usr puede ser montado directamente desde el CD-ROM o desde otro ordenador vía NFS en modo sólo lectura.

3.2.1. Organización de FHS

Los directorios y archivos aquí anotados, son sólo un subconjunto de los especificados por el FHS. Véase la última versión del FHS para una descripción detallada.

3.2.1.1. El directorio /dev/

El directorio /dev/ contiene entradas del sistema de archivos que representan dispositivos del sistema. Estos archivos son esenciales para el correcto funcionamiento del sistema.

3.2.1.2. El directorio /etc/

El directorio /etc/ está reservado para archivos de configuración que son locales a su ordenador. No deben colocarse binarios en /etc. Los binarios que antiguamente se colocaban en /etc deberían estar en /sbin o posiblemente en /bin.

Los directorios X11/ y skel/ son subdirectorios del directorio /etc/:

/etc
  |- X11/
  |- skel/

El directorio /etc/X11/ es para archivos de configuración de X11 como XF86Config. El directorio /etc/skel es para archivos "esqueleto" (del inglés "skeleton") de usuarios, archivos que se utilizan para rellenar el directorio principal de un usuario cuando éste es creado.

3.2.1.3. El directorio /lib/

El directorio /lib/ debería contener sólo las librerías necesarias para ejecutar los binarios en /bin y /sbin. Estas imágenes de librerías compartidas son particularmente importantes para arrancar el sistema y ejecutar comandos en el sistema de archivos de root.

3.2.1.4. El directorio /mnt/

El directorio /mnt/ se refiere a sistemas de archivos montados temporalmente, tales como CD-ROMs y disquetes.

3.2.1.5. El directorio /opt/

El directorio /opt/ proporciona un área para almacenar habitualmente paquetes de software de una aplicación estática y amplia.

Un paquete colocando archivos en el directorio /opt/ crea un directorio con el mismo nombre del paquete. Este directorio en su lugar guarda archivos que de otra forma estarías esparcidos por el sistema de archivos, dándole así al administrador del sistema una forma fácil de determinar el papel de cada archivo dentro de un paquete particular.

Por ejemplo, si sample fuese el nombre de un paquete de software particular localizado en el directorio /opt/, todos sus archivos podrían ser emplazados en directorios dentro de /opt/sample/, tales como /opt/sample/bin/ para binarios y /opt/sample/man/ para páginas de manual.

Los paquetes grandes que abarcan diferentes subpaquetes, cada uno de los cuales desempeñan una tarea específica, también también se ubican dentro de /opt/, aportando a este gran paquete un modo estándar de organizarse. De este modo, el paquete sample puede tener diferentes herramientas que cada una irá en sus propios subdirectorios, tales como /opt/sample/tool1/ y /opt/sample/tool2/, cada uno de los cuales puede tener su propio bin/, man/ y otros directorios similares.

3.2.1.6. El directorio /proc/

El directorio /proc/ contiene "archivos" especiales que o bien extraen información del kernel o bien la envían a éste.

Debido a la gran variedad de datos que contiene el directorio /proc/ y a la gran cantidad de maneras utilizadas para comunicar con el kernel, se ha dedicado un capítulo entero a este tema. Para mayor información vea el Capítulo 5.

3.2.1.7. El directorio /sbin/

El directorio /sbin/ es para ejecutables usados sólo por el usuario root. Los ejecutables en /sbin sólo se usan para arrancar y montar /usr y ejecutar operaciones de recuperación del sistema. El FHS dice:

"/sbin contiene típicamente archivos esenciales para arrancar el sistema además de los binarios en /bin. Cualquier archivo ejecutado tras /usr, será montado (si no surge ningún problema) y ubicado en /usr/sbin. Los binarios de administración de sistema local solamente, deberían ser ubicados en /usr/local/sbin."

Los siguientes programas deberían encontrarse, al menos, en /sbin/:

arp, clock,
getty, halt,
init, fdisk,
fsck.*, grub,
ifconfig, lilo,
mkfs.*, mkswap,
reboot, route,
shutdown, swapoff,
swapon, update

3.2.1.8. El directorio /usr/

El directorio /usr es para archivos que puedan ser compartidos a través de todo el sitio. El directorio /usr habitualmente tiene su propia partición y debería ser montable en sólo lectura. Como mínimo, los siguientes directorios deberían ser subdirectorios de /usr:

/usr
  |- bin/
  |- dict/
  |- doc/
  |- etc/
  |- games/
  |- include/
  |- kerberos/
  |- lib/
  |- libexec/	    
  |- local/
  |- sbin/
  |- share/
  |- src/
  |- tmp -> ../var/tmp/
  |- X11R6/

El directorio bin/ contiene ejecutables, dict/ contiene páginas de documentación incompatibles con FHS, etc/ contiene archivos de configuración de sistema, games es para juegos, include/ contiene los archivos de cabecera C, kerberos/ contiene binarios y muchos más archivos de Kerberos y lib/ contiene archivos objeto y librerías que no están diseñadas para ser directamente utilizadas por usuarios o scripts de shell. El directorio libexec/ contiene pequeños programas de ayuda llamados por otros programas, sbin/ es para los binarios de administración del sistema (aquéllos que no pertenecen a /sbin/ share/ contiene archivos que no son de una arquitectura específica, src/ es para código fuente y X11R6/ es para el sistema X Window (XFree86 de Red Hat Linux).

3.2.1.9. El directorio /usr/local/

El FHS dice:

"La jerarquía /usr/local es para uso del administrador del sistema al instalar localmente el software. Necesita ser seguro para ser sobreescrito cuando el software del sistema es compartible entre un grupo de hosts, pero no se encuentra en /usr."

El directorio /usr/local/ es similar en estructura al directorio /usr/. Tiene los siguientes subdirectorios, que son similares en propósito a los del directorio /usr/:

/usr/local
       |- bin/
       |- doc/
       |- etc/
       |- games/
       |- include/
       |- lib/
       |- libexec/
       |- sbin/
       |- share/
       |- src/

3.2.1.10. El directorio /var/

Ya que el FHS requiere que Linux sea capaz de montar /usr/ en sólo lectura, cualquier programa que escriba archivos log o que necesite los directorios spool/ o lock/ debería escribirlos en el directorio /var/. El FHS especifica que /var/ es para:

"…archivos de datos variables. Esto incluye archivos y directorios spool, datos de administración, de registro y archivos temporales."

Los siguientes directorios deberían ser subdirectorios de /var/:

/var
  |- account/
  |- arpwatch/
  |- cache/
  |- crash/
  |- db/
  |- empty/
  |- ftp/
  |- gdm/
  |- kerberos/
  |- lib/
  |- local/
  |- lock/
  |- log/
  |- mail -> spool/mail/
  |- mailman/
  |- named/
  |- nis/
  |- opt/
  |- preserve/
  |- run/
  +- spool/
       |- anacron/
       |- at/
       |- cron/
       |- fax/
       |- lpd/
       |- mail/
       |- mqueue/
       |- news/
       |- rwho/
       |- samba/
       |- slrnpull/
       |- squid/
       |- up2date/
       |- uucp/
       |- uucppublic/
       |- vbox/
       |- voice/
  |- tmp/
  |- tux/
  |- www/
  |- yp/

Los archivos log de sistema tales como messages/ y lastlog/ están en el directorio /var/log/. El directorio /var/lib/rpm/ también contiene el las bases de datos RPM. Los archivos lock van en /var/lock/, habitualmente en directorios particulares para el programa en el uso del archivo. El directorio /var/spool/ tiene subdirectorios para varios sistemas que necesitan almacenar los archivos de datos.

3.2.2. /usr/local/ en Red Hat Linux

En Red Hat Linux, el propósito del uso del directorio /usr/local/ ligeramente diferente de lo especificado por FHS. El FHS establece que en /usr/local/ debería memorizarse el software que permanece seguro en las actualizaciones de software de sistemas. Ya que las actualizaciones de sistemas de Red Hat Linux se han realizado de forma segura con el comando rpm y la aplicación gráfica Herramienta de administración de paquetes, no es necesario proteger archivos poniéndolos en /usr/local/. En vez de esto, el directorio /usr/local/ es usado para software que es local a la máquina.

Por ejemplo, si usted ha montado /usr/ sólo lectura de NFS desde un host remoto, aún es posible instalar un paquete o programa bajo el directorio /usr/local/.