4.0 Vista General del rbol de Directorios

"Dos das mas tarde, estuvo Pooh, sentada en su rama, balancendose con sus 
patas, y all, estando su, fueron cuatro cazuelas (ollas) de encanto 
(dulzura)"(A.A. Milne)

En este captulo se describen las partes importantes de un rbol de 
directorios GNU/Linux estndar, basado en el Estndar de la Jerarqua del 
Sistema de Archivos de Linu (Filesystem Hierarchy Standart, FHS). En este 
captulo adems, se explica en lneas generales, la forma normal de dividir el 
rbol de directorios dentro de sistemas de archivos con diferentes propsitos 
y establece los motivos para esta distribucin particular. Tambin sern 
descriptas otras formas alternativas de realizar tal divisin.


4.1 Trasfondo

Este captulo est basado en el Estndar de la Jerarqua del Sistema de 
Archivos de Linux, (FHS), versin 2.1, el cual intenta establecer un estndar 
de como se organiza el rbol de directorios en un sistema GNU/Linux. Tal 
estndar tiene la ventaja de facilitar el trabajo al escribir o portar 
software al sistema operativo GNU/Linux, 
y administrar mquinas Linux, debido a que todas las cosas se encuentra 
en sus lugares habituales. No existe autoridad que obligue a cualquiera a 
cumplir con el estndar, pero este tiene el apoyo de muchas distribuciones 
GNU/Linux. No es una buena idea quebrar con el FHS 
sin que existan justificaciones indiscutibles. El FHS pretende seguir con la 
tradicin UNIX y con las tendencias actuales, ocacionando que los sistemas 
GNU/Linux le sean familiares a quienes tengan experiencia con otros sistemas 
Unix, y viceversa.

Este captulo no es tan detallado como el FHS. Un administrador de sistemas 
debe leer el FHS completo para entenderlo totalmente.

En este captulo no se explican todos los archivos en detalle. El propsito es 
dar una visin general del sistema desde el punto de vista del sistema de 
archivos, lo cual no significa que se describa cada uno de los archivos. 
Informacin adicional sobre cada archivo se encuentra disponible en su manual 
o en las pginas de manual de GNU/Linux.

El rbol de directorios completo est proyectado para ser dividido en partes 
pequeas, cada una en su propio disco o particin, para acomodarse a los 
lmites del tamao del disco y para que le sea fcil realizar copias de 
seguridad y otras tareas en la administracin de sistemas. Las partes 
principales son los sistemas de archivos raz (/), /usr, /var, y /home. Cada 
parte tiene un propsito diferente. El rbol de directorios fue diseado para 
que trabaje bien en una red de mquinas GNU/Linux, las cuales pueden compartir 
algunas partes del sistema de archivos sobre un dispositivo de solo-lectura 
(CD-ROM por ejemplo), o sobre la red a travs de NFS.

Los roles de las diferentes secciones del rbol de directorios son descriptas 
aqu debajo.

El sistema de archivos raz es especfico para cada mquina (generalmente se 
encuentra almacenado en el disco local, aunque este puede tranquilamente ser 
un ramdisk o una unidad de red) y contiene los archivos que son necesarios 
para iniciar el sistema, y dejar a este en un estado en que los dems sistemas 
de archivos puedan ser montados. El contenido del sistema de archivos raz es 
por lo tanto suficiente para el estado o nivel de ejecucin de usuario 
individual. Tambin contiene herramientas para solucionar problemas en un 
sistema daado, y para recuperar archivos que se hayan perdido desde copias de 
seguridad.

El sistema de archivos /usr contiene todos los comandos, libreras, pginas de 
manual, y otros archivos que no sern modificados durante la operacin normal 
del sistema. No existen archivos bajo /usr que deban ser especficos para una 
mquina particular, y ninguno de los archivos aqu deben ser modificados 
durante la utilizacin normal del sistema. Esto permite que los archivos sean 
compartidos a travs de la red, lo cual puede ser efectivo en costo, debido 
que se tiene un ahorro en espacio de disco (/usr puede ocupar fcilmente miles 
de megabytes),  y puede facilitar la administracin (solo el /usr maestro 
necesita ser modificado cuando actualizamos una aplicacin, y no en cada 
mquina por separado). An cuando el sistema de archivos resida en el disco 
local, este puede ser montado como solo lectura, para evitar la posibilidad de 
que se corrompa durante una falla o cada.

El sistema de archivos /var contiene archivos que cambian durante la operacin 
normal del sistema, tales como directorios spool (para correo, noticias 
(news), impresoras, etc), archivos de log, pginas de manual formateadas, y 
archivos temporarios. Tradicionalmente todo en /var es algo que debera estar 
en /usr, pero que hara imposible a /usr montar como solo lectura.

El sistema de archivos /home contiene los directorios homes de los usuarios, 
i.e., todos los datos reales del sistema. Separar los directorios homes a su 
rbol de directorios o sistema de archivos propio, hace ms fcil la tarea de 
realizar copias de seguridad; los dems sistemas de archivos no necesitan 
frecuentemente que se les haga copias de seguridad, o al menos no tan 
frecuentemente (ellos rara vez cambian). Un gran /home puede se partido en 
varios sistemas de archivos, lo cual requiere agregar niveles de nombres 
extras dentro de /home, como por ejemplo, /home/estudiantes y /home/staff.

Aunque si bien las diferentes partes fueron llamadas sistemas de archivos 
anteriormente, no existe ningn requerimiento para que ellos se encuentren 
actualmente en sistemas de archivos separados. Ellos pueden fcilmente 
mantenerse en un solo sistema de archivos si el sistema es un sistema pequeo 
de un solo usuario, y este solo desea mantener las cosas de manera simple. El 
rbol de directorios puede tambin ser dividido en sistemas de archivos 
diferentemente, dependiendo de cuan grande sean los discos, y de como el 
espacio es destinado para varios propsitos. La parte importante, no obstante, 
es que todos los nombres estndar trabajen, an cuando, digamos, /var y /usr 
se encuentren actualmente en la misma particin, los nombres /usr/lib/libc.a y 
/var/log/messages deben trabajar, an cuando, por ejemplo, moviramos los 
archivos que se encuentren en /var dentro de /usr/var, y hagamos a /var un 
enlace simblico a /usr/var.

La estructura del sistema de archivos en UNIX agrupa a los archivos de acuerdo 
a sus propsitos, por lo tanto, todos los comandos estn en un mismo lugar, 
todos los archivos de datos en otro, la documentacin en un tercer lugar, etc. 
Otra alternativa, podra ser, la de agrupar los archivos de acuerdo al 
programa al que ellos pertenecen, i.e., todos los archivos de Emacs podran 
llegar a estar en un mismo directorio, todos los de Tex en otro, etc. El 
problema con esta ltima aproximacin es que hace dificultoso compartir 
archivos (el directorio del programa frecuentemente contiene archivos no 
cambiantes y compartibles, y cambiantes y no compartibles), y algunas veces 
hace dificultoso encontrar archivos (por ejemplo, las pginas de manual se 
encuentran ubicadas en una gran cantidad de lugares, y trae como consecuencia, 
que sea una pesadilla para los programas que leen tales pginas de manual, 
cuando buscan a estas).


4.2 El sistema de archivos raz

El sistema de archivos raz debe generalmente ser pequeo, ya que residen 
archivos muy crticos. Si el sistema de archivos es pequeo y rara vez es 
modificado, entonces tiene ms posibilidades de no 
daarse. Un sistema de archivos raz daado generalmente significa que el 
sistema no podr iniciarse, excepto que se tomen medidas especiales (por ej., 
tal vez pueda iniciarse desde un disquete de emergencia), por lo que no 
querrs arriesgarte.

El directorio raz no contiene generalmente archivos, exceptuando quizs a la 
imagen del kernel estndar, usualmente llamada /vmlinuz. 

Todos los dems archivos se encuentran en subdirectorios bajo el sistema de 
archivos raz:

/bin
Comandos necesarios durante el inicio del sistema que pueden ser utilizados 
por usuarios normales (probablemente luego de que el sistema se haya iniciado).
/sbin
Igual que /bin, pero los comandos no estn destinados a los usuarios normales, 
aunque pueden utilizarse en caso de que sea necesario y el sistema lo permita. 
/sbin no se encuentra en los caminos por defecto de los usuarios normales, si 
se encuentra definido en los caminos por defecto para root.
/etc
Archivos de configuracin especficos de la mquina.
/root
El directorio home para el usuario root. Usualmente no puede ser accedido por 
los dems usuarios del sistema.
/lib
Libreras compartidas necesarias por los programas que se encuentran en el 
sistema de archivos raz.
/dev
Archivos de dispositivos. Algunos de los archivos de dispositivos ms 
comnmente utilizados son examinados en el Captulo 5.
/tmp
Archivos temporarios. Los programas que se ejecuten despus de que el sistema 
se haya iniciado deben utilizar /var/tmp, no /tmp, debido a que /var/tmp 
probablemente resida en una particin o disco con ms espacio. Frecuentemente 
/tmp es un enlace simblico para /var/tmp.
/boot
Archivos utilizados por el cargador de arranque, por ejemplo, LILO. Las 
imgenes del kernel son con frecuencia mantenidas en este directorio, en vez 
de encontrarse en el directorio raz. Si existen muchas imgenes del kernel, 
el directorio puede llegar a crecer mucho, por lo que es mejor mantener a este 
directorio en un sistema de archivos separado. Otra razn puede llegar a ser 
para asegurarse de que las imgenes del kernel se encuentren dentro de los 
primeros 1024 cilindros de un disco IDE.
/mnt
Punto de montaje temporario para los sistemas de archivos montados por el 
administrador del sistema. Los programas no conocen como deben montar en /mnt 
automticamente. Es posible que /mnt se encuentre dividido en subdirectorios 
(por ej., /mnt/dosa puede llegar a ser el punto de montaje para la unidad de 
disquete con sistema de archivos MS-DOS, y /mnt/extra puede llegar a ser lo 
mismo con un sistema de archivos ext2).
/proc, /usr, /var, /home
Puntos de montaje para otros sistemas de archivos.


4.3 El directorio /etc

El directorio /etc contiene un grupo particular archivos. Algunos de ellos 
estn descriptos aqu, mas debajo. Para otros archivos, debera determinar a 
que programa ellos configuran y leer la pgina de manual para este programa. 
Muchos archivos de configuracin de red se encuentran en /etc, y se encuentran 
descriptos en La Gua para Administradores de Redes en Linux.

/etc/rc o /etc/rc.d o /etc/rc?.d
Archivos scripts o directorios de archivos scripts que se ejecutan en el 
arranque del sistema o cuando cambia el nivel de ejecucin. Vea el captulo 
sobre init para mas informacin.
/etc/passwd
La base de datos de los usuarios, con campos que dan el nombre de usuario, 
nombre real, directorio home, password encriptada, y otra informacin acerca 
de cada usuario. El formato de este archivo se encuentra documentado en la 
pgina de manual para passwd.
/etc/fdprm
Tabla de parmetros para discos flexibles. Describe que formatos de discos 
flexibles diferentes pueden llegar a utilizarse. Este archivo es utilizado por 
el programa setfdprm. Vea la pgina de manual de setfdprm para ms informacin.
/etc/fstab
Lista los sistemas de archivos que deben ser montados automticamente en el 
arranque del sistema por el comando mount -a (en /etc/rc o archivo de inicio 
equivalente). Bajo Linux, tambin contiene informacin acerca de reas de swap 
utilizadas automticamente por swapon -a. Lea la Seccin 6.8.5 y la pgina de 
manual del comando mount para obtener ms informacin.
/etc/group
Este archivo es similar a /etc/passwd, pero describe grupos en vez de 
usuarios. Vea la pgina de manual group para obtener ms informacin.
/etc/inittab
Archivo de configuracin para init.
/etc/issue
Archivos que utiliza getty como salida antes de pedir el nombre de usuario. 
Usualmente contiene una descripcin corta o mensaje de bienvenida al sistema. 
El contenido es establecido por el administrador del sistema.
/etc/magic
El archivo de configuracin para el programa file. Contiene las descripciones 
de varios formatos de archivos que utiliza file para determinar el tipo de 
cada archivo. Vea las pgina de manual para magic y file para ms informacin.
/etc/motd
Contiene el mensaje del da, automticamente emitido luego de un inicio se 
sesin exitoso. El contenido es colocado por el administrador del sistema. Con 
frecuencia se utiliza para dar informacin a todos los usuarios, tal como, por 
ejemplo, mensajes de advertencias acerca de la hora en que se planea cerrar el 
sistema del servidor.
/etc/mtab
Contiene un listado de los sistemas de archivos actualmente montados. 
Inicialmente establecido por los scripts del arranque del sistema, y 
actualizado automticamente por el comando mount. Se utiliza cuando se 
necesita un listado de los sistemas de archivos que estn actualmente 
montados, por ejemplo por el comando df.
/etc/shadow
Archivo de contraseas ocultas en sistemas donde el software de contraseas 
ocultas se encuentre instalado. Si utiliza contraseas ocultas la password 
encriptada de cada usuario es removida de /etc/passwd y colocada en el archivo 
/etc/shadow; este archivo no puede ser ledo por nadie a excepcin del usuario 
root. De esta manera se dificulta el proceso de crakear las passwords de los 
usuarios. Si la distribucin GNU/Linux que utilice le permite elegir utilizar 
o no contraseas ocultas (puede hacerlo), entonces es ltamente recomendado 
que lo haga.
/etc/login.defs
Archivo de configuracin para el comando login. El archivo login.defs 
usualmente tiene la pgina de manual en la seccin 5.
/etc/printcap
Similar a /etc/termcap, con la excepcin de que est destinado a la 
configuracin de colas de impresin. La sintaxis tambin es diferente. 
printcap tiene la pgina de manual en la seccin 5.
/etc/profile, /etc/csh.login, /etc/csh.csgrc
Archivos que son ejecutados en el momento de iniciar el intrprete de comandos 
C o Bourne. Permite al administrador del sistema establecer parmetros 
globales por defecto para todos los usuarios. Vea las pginas de manual para 
los respectivos intrpretes de comandos.
/etc/securetty
Identifica las terminales seguras, i.e., las terminales por las cuales el 
usuario root tiene permitido iniciar una sesin. Tpicamente solo las cnsolas 
virtuales se encuentran listadas en este archivo, de esta manera se hace 
imposible (o al menos mas difcil) obtener privilegios de superusuario a 
travs de un mdem o la red. No permita iniciar una sesin como usuario root 
desde la red. Es preferible iniciar una sesin con un usuario sin privilegios 
y utilizar su o sudo para obtener privilegios de root.
/etc/shells
Listado de intrpretes de comandos confiables. El comando chsh permite a los 
usuarios cambiar su intrprete de comandos por defecto a otro que se encuentre 
listado en este archivo. Ftpd, el proceso servidor que provee servicios FTP 
para una mquina, chequea que los intrpretes de comandos de los usuarios 
estn listados en /etc/shells y no permite que personas inicien una sesin si 
el intrprete de comandos no se encuentra en tal listado.
/etc/termcap
La base de datos de la capacidad de la terminal. Describe por cuales 
secuencias de escapes varias terminales pueden ser controladas. Los programas 
son escritos para que en vez de sacar directamente una secuencia de escape que 
solo trabaja en un tipo de terminal, ellos observan la secuencia correcta de 
lo que quieren hacer en /etc/termcap. Como resultado, la mayora de los 
programas trabajan con la mayora de los tipos de terminales existentes. Vea 
las pginas de manual de termcap, curs_termcap, y de terminfo para ms 
informacin.


4.4 El directorio /dev

El directorio /dev contiene los archivos de dispositivos especiales para todos 
los dispositivos. Los archivos de dispositivos estn nombrados utilizando 
convenciones especiales; ellos estn descriptos en el Captulo 5. Los archivos 
de dispositivos son creados durante la instalacin del sistema, y luego pueden 
ser creados con el script /dev/MAKEDEV. El /dev/MAKEDEV.local es un script 
escrito por el administrador del sistema que crea archivos de dispositivos 
solo-locales o enlaces (i.e., estos no son partes del estndar MAKEDEV, tal 
como archivos de dispositivos para algn controlador de dispositivo no 
estndar).


4.5 El sistema de archivos /usr

El sistema de archivos es con frecuencia grande, debido a que todos los 
programas estn instalados aqu. Todos los archivos en /usr usualmente viene 
desde una distribucin Linux; programas instalados localmente y otros stuff se 
encuentran bajo /usr/local. De esta manera es posible actualizar el sistema 
desde una nueva versin de la distribucin, o tal vez desde una distribucin 
completamente nueva (otra), sin tener que instalar todos los programas 
nuevamente. Algunos de los directorios de /usr estn explicados aqu debajo 
(algunos de los directorios menos importantes fueron omitidos, vea el FSSTND 
para obtener ms informacin).

/usr/X11R6
Se encuentran todos los archivos del Sistema de Ventanas X. Para simplificar 
el desarrollo y la instalacin de X,  los archivos de X no fueron integrados 
dentro del resto del sistema. Existe un rbol de directorios bajo /usr/X11R6 
similar al que est bajo /usr.
/usr/X386
Similar a /usr/X11R6, pero para X11 versin 5.
/usr/bin
En este directorio se encuentran la gran mayora de los comandos para todos 
los usuarios. Algunos otros comandos pueden encontrarse en /usr/local/bin.
/usr/sbin
Comandos para la administracin del sistema que no son necesarios en el 
sistema de archivos raz, como por ejemplos la mayora de los programas que 
proveen servicios.
/usr/share/man, /usr/share/info, /usr/share/doc
Pginas de manual, documentos Info GNU, y archivos de documentacin de los 
programas instalados.
/usr/include
Archivos cabecera para el lenguaje de programacin C. Estos deben estar 
actualmente debajo de /usr/lib para consistencia, pero la tradicin es 
overwhelmingly en soporte para este nombre.
/usr/lib
Archivos de datos para programas y subsistemas que no sufren cambio, 
incluyendo algunos archivos de configuracin site-wide. El nombre lib viene de 
librera, originariamente las libreras de las subrutinas de programacin 
fueron almacenadas en /usr/lib.
/usr/local
El lugar para el software instalado localmente y para algunos otros archivos. 
Las distribuciones no deben colocar archivos bajo este directorio. Se reserva 
para ser utilizado nicamente por el administrador del sistema local. De esta 
manera, el administrador del sistema local se encuentra absolutamente seguro 
de que ninguna actualizacin de su distribucin sobreescribir software extra 
que el mismo haya instalado localmente.


4.6 El sistema de archivos /var

El sistema de archivos /var contiene datos que cambian cuando el sistema se 
ejecuta normalmente. Es especfico para cada sistema y por lo tanto no es 
compartido a travs de la red con otras computadoras.

/var/cache/man
Una cach para pginas de manual que son formateadas en demanda. Las fuentes 
de las pginas de manual se encuentran almacenada usualmente en /usr/man/man? 
(donde ? es la seccin de las pginas de manual. Lea la pgina de manual para 
man en la seccin 7); algunas pginas de manual pueden llegar a venir con una 
versin pre-formateadas, las cuales estn almacenadas en /usr/share/man/cat*. 
Otras pginas de manual necesitan ser formateadas cuando ellas son 
visualizadas por primera vez; la versin formateada es almacenada entonces en 
/var/cache/man para que la prxima vez que una persona necesite ver la misma 
pgina no tiene que esperar a que se le de formato.
/var/lib
Archivos que cambian mientras el sistema se ejecuta normalmente.
/var/local
Datos variables para los programas que se encuentran instalados en /usr/local 
(programas que fueron instalados por el administrador del sistema. Note que 
aunque los programas se encuentren instalados localmente deben utilizar los 
otros directorios /var en caso de que fuese apropiado, como por ejemplo: 
/var/lock.
/var/lock
Archivos de bloqueos. Muchos programas siguen una convencin para crear un 
archivo de bloqueo en /var/lock para inidicar que estn utilizando un 
dispositivo particular o un archivo. Otros programas se notifican a travs de 
algn archivo de bloqueo y no intentan acceder a el dispositivo o archivo.
/var/log
Archivos de log de varios programas, especialmente de login (/var/log/wtmp, el 
cual registra todos los inicios de sesin y los cierre de sesin en el 
sistema) y de syslog (/var/log/messages, en donde se almacenan todos los 
mensajes del kernel y de los programas del sistema). Archivos dentro del 
directorio /var/log pueden crecer indefinidamente, por lo que requieren una 
limpieza a intervalos regulares.
/var/mail
Esta es la ubicacin definida por el FHS para almacenar los archivos de 
correos. Dependiendo de cuanto cumpla su distribucin GNU/Linux con el FHS, 
estos archivos pueden llegar a estar ubicados en /var/spool/mail.
/var/run
Directorio que contiene archivos con informacin acerca del sistema. Tal 
informacin es valedera hasta el prximo inicio del sistema. Por ejemplo: 
/var/run/utmp contiene informacin de las personas que actualmente tienen 
sesiones iniciadas.
/var/spool
Contiene directorios para las noticias, el correo, colas de impresin, y otros 
que necesiten trabajar con colas. Cada spool diferente tiene su propio 
directorio debajo de /var/spool, por ejemplo: el spool de noticias se 
encuentra en /var/spool/news. Note que si alguna instalacin no cumple 
totalmente con la ltima versin del FHS entonces los buzones de correo 
entrante de los usuarios pueden encontrarse en /var/spool/mail.
/var/tmp
Archivos temporarios grandes o que necesitan existir por un tiempo ms 
amplio de lo permitido en /tmp. (De todas formas, el administrador del 
sistema, puede no permitir muchos archivos antiguos en /var/tmp si as lo 
desea).


4.7 El sistema de archivos /proc

El sistema de archivos /proc contiene un sistema de archivos imaginario o 
virtual. Este no existe fsicamente en disco, sino que el kernel lo crea en 
memoria. Es utilizado para ofrecer informacin relacionada con el sistema 
(originalmente acerca de procesos, de aqu su nombre). Algunos de los archivos 
ms importantes son explicados mas debajo. El sistema de archivos /proc se 
encuentra descripto con ms detalle en la pgina de manual de proc.

/proc/1
Un directorio con informacin acerca del proceso nmero 1. Cada proceso tiene 
un directorio debajo de /proc cuyo nombre es el nmero de identificacin del 
proceso (PID).
/proc/cpuinfo
Informacin acerca del procesador: su tipo, marca, modelo, performance, etc.
/proc/devices
Lista de controladores de dispositivos configurados dentro del kernel que est 
en ejecucin.
/proc/dma
Muestra los canales DMA que estn siendo utilizados.
/proc/filesystems
Lista los sistemas de archivos que estn soportados por el kernel.
/proc/interrupts
Muestra la interrupciones que estn siendo utilizadas, y como muchas de cada 
ellas estn.
/proc/ioports
Informacin de los puertos de E/S que se estn utilizando en este momento.
/proc/kcore
Una imagen de la memoria fsica del sistema. Este archivo tiene exactamente el 
mismo tamao que tu memoria fsica, pero no existe en memoria como el resto de 
los archivos bajo /proc, es generado en el momento en que un programa accede a 
este. (Recuerde: a menos que copie este archivo en otro lugar, nada bajo /proc 
toma espacio en disco).
/proc/kmsg
Mensajes emitidos por el kernel. Estos son ruteados por syslog.
/proc/ksyms
Tabla de smbolos para el kernel.
/proc/loadavg
La carga promedio del sistema; tres indicadores significativos sobre cuanto 
trabaja el sistema en este momento.
/proc/meminfo
Informacin acerca de la utilizacin de la memoria fsica y de swap.
/proc/modules
Indica que mdulos del kernel fueron cargados hasta el momento.
/proc/net
Informacin acerca del estado acerca de los protocolos de red.
/proc/self
Un enlace simblico al directorio del proceso del programa que est observando 
a /proc. Cuando dos procesos observan a /proc, ellos obrienen diferentes 
enlaces. Esto es principalmente una conveniencia para que sea fcil para los 
programas obtener su directorio de procesos.
/proc/stat
Varias estadsticas acerca del sistema, tales como el nmero de fallas de 
pginas que se sucedieron desde el arranque del sistema.
/proc/uptime
El tiempo en segundos que el sistema fue iniciado.
/proc/version
La versin del kernel.

Ntese que mientras los archivos anteriores tienden a ser archivos de textos 
fciles de leer, algunas veces, ellos pueden llegar a tener un formato que no 
sean fciles de digerir. Existen muchos comandos que solo leen los archivos 
anteriores y les dan un formato para que la informacin sea fcil de entender. 
Por ejemplo, el comando free, lee el archivo /proc/meminfo y convierte las 
cantidades dadas en bytes a kilobytes (y agrega un poco mas de informacin 
extra).



