Vista preliminar al estándar de jerarquía del sistema de ficheros (FHS)

Red Hat se ha comprometido a respetar el Estándar de Jerarquía del Sistema Ficheros (FHS del inglés Filesystem Hierarchy Standard), un documento de consenso que define los nombres y la situación de muchos ficheros y directorios. En el futuro se seguirá el estándar para asegurar la compatibilidad de Red Hat Linux

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

Organización de FHS

Los directorios y ficheros 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.

Directorio /dev

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

Directorio /etc

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

Los directorios X11 y skel deben ser subdirectorios de /etc:

/etc
  |- X11
  |- skel

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

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 ficheros de root.

Directorio /mnt

El directorio /mnt se refiere a sistemas de ficheros montados temporalmente, tales como CD-ROMs y discos flexibles.

Directorio /opt

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

Para paquetes en los que se evite poner ficheros a través del sistema de ficheros, proporciona un sistema de organización predecible y lógico bajo el directorio de paquetes. Esto le aporta al gestor del sistema un modo sencillo de determinar el rol de cada fichero en un paquete particular.

Por ejemplo, si sample fuese el nombre de un paquete de software particular localizado en /opt, todos sus ficheros 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 especifica, también funcionan con /opt, aportando a este gran paquete un modo estándar de organizarse. De este modo, el paquete sample tendrá diferentes herramientas cada una de las cuales irá a sus 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.

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 sólo local, 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.*, ifconfig, lilo, mkfs.*, mkswap, reboot,
route, shutdown, swapoff, swapon, update

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. Los siguientes directorios deberían ser subdirectorios /usr:

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

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

Directorio /usr/local

El FHS dice:

"La jerarquía /usr/local es para uso del gestor 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 a los del directorio /usr:

/usr/local
       |- bin
       |- doc
       |- etc
       |- games
       |- info
       |- lib
       |- man
       |- sbin
       |- src

Directorio /var

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

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

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

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

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

/usr/local en Red Hat Linux

En Red Hat Linux, el uso del directorio /usr/local es ligeramente diferente de lo especificado por FHS. El FHS establece que en /usr/local debería memorizarse el software que permanece seguro en las actualizacione de software de sistemas. Ya que las actualizaciones de sistemas de Red Hat se han realizado de forma segura con /usr/local y Gnome-RPM, no necesita proteger archivos poniéndolos en /usr/local. Le recomendamos que use /usr/local para el software local de su máquina.

Por ejemplo, si usted ha montado /usr mediante sólo lectura de NFS desde un host local llamado jake. Si existe un paquete o programa que le gustaría instalar, pero no le es posible escribir en jake debería instalarlo bajo /usr/local. Si ha conseguido que el gestor de sistema de jake instale el programa en /usr, puede desinstalarlo desde /usr/local.