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

Red Hat Enterprise Linux está comprometido a respetar el Estándar de Jerarquía de Sistemas de archivos (FHS del inglés Filesystem Hierarchy Standard), un documento de consenso que define los nombres, la ubicación y los permisos de muchos tipos de 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 cumplimiento del estándar significa varias cosas, pero 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. Este segundo punto es importante porque el directorio contiene ejecutables comunes y no está pensado para ser alterado por los usuarios. Por este motivo, el directorio /usr/ se monta como de sólo lectura, y esto se puede hacer directamente desde el CD-ROM o desde otro ordenador a través de 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.

El estándar completo está disponible en línea desde http://www.pathname.com/fhs/.

3.2.1.1. El directorio /boot/

El directorio /boot/ contiene archivos estáticos requeridos para arrancar el sistema, tales como el kernel de Linux. Estos archivos son esenciales para que el sistema arranque correctamente.

AvisoAviso
 

No elimine el directorio /boot/. Si lo hace, entonces no podrá arrancar su sistema.

3.2.1.2. 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.3. El directorio /etc/

El directorio /etc/ está reservado para los 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 de colocarse en /sbin/ o en /bin/.

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

/etc
  |- X11/
  |- skel/

El directorio /etc/X11/ es para los archivos de configuración de X Window System, como xorg.conf. El directorio /etc/skel/ es para archivos "esqueleto" (del inglés "skeleton") de usuarios, que son archivos utilizados para rellenar el directorio principal de un usuario la primera vez que este es creado.

3.2.1.4. El directorio /lib/

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

3.2.1.5. El directorio /media/

El directorio /media/ contiene los subdirectorios utilizados como puntos de montaje para la media removible, tales como CD-ROMs y discos Zip.

3.2.1.6. El directorio /mnt/

El directorio /mnt/ está reservado para sistemas de archivos montados temporalmente, tales como montajes de NFS. Para toda la media removible utilice el directorio /media/.

NotaNota
 

No se debe utilizar este directorio para la instalación de programas.

3.2.1.7. 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 que coloca archivos en el directorio /opt/ crea un directorio con el mismo nombre del paquete. Este directorio a su vez, guarda archivos que de otra forma estarían 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/, entonces 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 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.8. 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 que este directorio utiliza 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.9. El directorio /sbin/

El directorio /sbin/ almacena los ejecutables usados por el usuario root. Los ejecutables en /sbin/ sólo se usan para arrancar y hacer operaciones de recuperación del sistema. De este directorio, la FHS dice:

/sbin contiene los archivos binarios esenciales para arrancar, restaurar, recuperar y/o reparar el sistema, además de los binarios en /bin. Los programas ejecutados después de /usr/, son montados (si no surge ningún problema) y ubicados en /usr/sbin. Los programas de administración del sistema instalados localmente se deberían ubicar en /usr/local/sbin.

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

arp, clock,halt,
init, fsck.*, grub,
ifconfig, mingetty, mkfs.*, 
mkswap, reboot, route, 
shutdown, swapoff, swapon

3.2.1.10. El directorio /srv/

El directorio /srv/ contiene datos específicos al sitio proporcionada por su sistema ejecutando Red Hat Enterprise Linux. Este directorio le dá a los usuarios la ubicación de los archivos de datos para un servicio en particular, tal como FTP, WWW o CVS. Los datos que sólo pertenecen a un usuario específico deberían de ir en el directorio /home/.

NotaNota
 

Tenga en cuenta que los archivos de datos ubicados en /var/ quizás sean movidos a /srv/ en los lanzamientos futuros.

3.2.1.11. El directorio /sys/

El directorio /sys/ utiliza el nuevo sistema de archivos virtual sysfs específico al kernel 2.6. Ahora con el soporte más extendido para los dispositivos de conexión en caliente (hot plug) en el kernel 2.6, el directorio /sys/ contiene información similar a la que se encuentra en /proc/, pero muestra una vista jerárquica de la información de dispositivos específica con relación a los dispositivos de conexión en caliente.

Para ver ciertos dispositivos USB y Firewire montados, consulte la página man de /sbin/hotplug and /sbin/udev.

3.2.1.12. El directorio /usr/

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

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

Bajo el directorio /usr/, el directorio bin/ contiene ejecutables, el directorio etc/ contiene archivos de configuración de sistema, games es para juegos, include/ contiene los archivos de cabecera C, kerberos/ contiene binarios y otros archivos relacionados con Kerberos y lib/ contiene archivos objeto y bibliotecas 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 al directorio /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 en Red Hat Enterprise Linux).

3.2.1.13. El directorio /usr/local/

El FHS dice:

La jerarquía /usr/local es para el uso del administrador del sistema al instalar software localmente. Necesita estar protegido contra sobreescrituras cuando se actualiza el software del sistema. Puede ser utilizado por programas y datos compartidos entre grupos de hosts, pero que no se encuentran 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/
       |- etc/
       |- games/
       |- include/
       |- lib/
       |- libexec/
       |- sbin/
       |- share/
       |- src/

En Red Hat Enterprise Linux, el propósito 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 de las actualizaciones de software de sistemas. Ya que las actualizaciones de sistemas se pueden hacer de forma segura con el Red Hat Package Manager (RPM), 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/.

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

Abajo se muestran algunos de los directorios encontrados dentro del directorio /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/
       |- at/
       |- clientmqueue/
       |- cron/
       |- cups/
       |- exim/	      
       |- lpd/
       |- mail/
       |- mailman/
       |- mqueue/
       |- news/
       |- postfix/ 
       |- repackage/
       |- rwho/
       |- samba/ 
       |- squid/
       |- squirrelmail/
       |- up2date/
       |- uucp 
       |- uucppublic/
       |- vbox/
  |- tmp/
  |- tux/
  |- www/
  |- yp/

Los archivos de registro del sistema tales como messages/ y lastlog/ van en el directorio /var/log/. El directorio /var/lib/rpm/ también contiene las bases de datos RPM. Los archivos lock van en /var/lock/, habitualmente en directorios para el programa usando el archivo. El directorio /var/spool/ tiene subdirectorios para programas en los que se almacenan archivos de datos.