Este documento describe la estructura del sistema de archivos en Linux de acuerdo con el Estándar de Jerarquía de Sistemas de Archivos (FHS). Explica las ubicaciones y contenidos de directorios clave como /bin, /etc, /home, /lib, /sbin y otros. También cubre herramientas para localizar archivos como find, locate, which y whereis. El objetivo es reconocer la estructura del sistema de archivos y usar las herramientas de localización.
2. Administración de Archivos y Directorios Tecsup
Agosto 2009
ÍNDICE
1. Introducción ................................................................................ 3
2. Objetivos ..................................................................................... 3
3. Estándar de Jerarquía FHS. ......................................................... 3
4. Características ............................................................................. 4
5. Descripción de la Estructura del Sistema de Archivos ............... 5
5.1. /bin : Binarios de comandos ............................................ 5
5.2. /boot: ............................................................................... 6
5.3. /dev : Archivos de dispositivos. ...................................... 6
5.4. /etc : Configuración del sistema local a la máquina. ....... 6
5.5. /home: Directorios hogar de los usuarios. ....................... 7
5.6. /lib: Librerías compartidas y módulos de kernel
esenciales ..................................................................................... 7
5.7. /media: Punto de montaje para sistemas de archivos
montados temporalmente. ........................................................... 8
5.8. /proc: Información de procesos y del kernel. .................. 8
5.9. /root: Directorio hogar de root. ....................................... 8
5.10. /sbin: Binarios del Sistema. ............................................. 8
5.11. /tmp: Archivos temporales. ............................................. 9
6. Localización ................................................................................ 9
6.1. find ................................................................................ 10
6.2. locate ............................................................................. 10
6.3. which ............................................................................. 11
6.4. whereis .......................................................................... 11
7. Redireccionamiento de comandos............................................. 11
7.1. Salida Estándar .............................................................. 12
7.2. Redireccionar mensaje de error ..................................... 12
7.3. Adicionando información a un archivo ......................... 13
7.4. Concatenar..................................................................... 13
7.5. Redirección de la entrada estándar ................................ 14
7.6. Tuberías o pipes ............................................................ 14
8. Referencias Bibliográficas ........................................................ 14
Página 2
3. Tecsup Administración de Archivos y Directorios
Agosto 2009
1. Introducción
Todo Sistema Operativo necesita una estructura de archivos. La
estructura organiza la información en archivos y directorios.
Linux ha adoptado el Standard FHS.
La unidad básica en la estructura es el archivo, los cuales están
contenidos dentro de los directorios. El sistema de archivos de
Linux es frecuentemente ilustrado como una estructura de árbol
invertida. El nivel más alto de esta estructura es el directorio
“root” (/)
Los comandos necesitan de direccionamiento, que permite
encaminar la información a un determinado objetivo. Los
comandos de Linux han sido diseñados para trabajar con
operadores de direccionamiento.
2. Objetivos
Reconocer la estructura del sistema de archivos de Linux.
Utilizar herramientas para la localización de archivos y
directorios.
Operar los operadores de entrada y salida.
3. Estándar de Jerarquía FHS.
El Filesystem Hierarchy Standard (Estándar de Jerarquía de
Sistema de Ficheros) o FHS define los directorios principales y sus
contenidos en el sistema operativo LinuxGNU/Linux y otros
sistemas de la familia Unix. Se diseñó originalmente en 1994 para
estandarizar el sistema de archivos de las distribuciones
GNU/Linux, basándose en la tradicional organización de
directorios de los sistemas Unix. En 1995 se amplió el ámbito del
estándar a cualquier Unix que se adhiriese voluntariamente.
Todos los archivos y directorios aparecen bajo el directorio raíz /,
aunque se encuentre en distintos dispositivos físicos. Ejemplos de
directorios definidos por FHS incluyen:
/bin/ Órdenes esenciales binarios para todos los usuarios (cat,
ls, cp...)
/dev/ Dispositivos
/home/ Directorios de datos de los usuarios
/etc/ Ficheros de configuración del sistema
/lib/ Librerías esenciales para los binarios de /bin y /sbin
Página 3
4. Administración de Archivos y Directorios Tecsup
Agosto 2009
/var/ Ficheros variables utilizados por programas instaladas,
como logs y archivos temporales
/opt/ Paquetes de programas de aplicaciones estáticos
/sbin/ Binarios de superusuario esenciales (init, route, ifup..)
/proc/ Sistema de archivos que documenta el estado del
núcleo (kernel), principalmente archivos de texto (tiempo,
red...), estos archivos permiten conocer y cambiar ciertos
parámetros del núcleo sin necesidad de reiniciar el sistema
/media/ Sistemas de archivos montados temporalmente
/mnt/ Sistemas de archivos montados temporalmente
(obsoleto)
Fig. Estructura del Sistema de Archivos
4. Características
El sistema de archivos UNIX está caracterizado por:
Una estructura jerárquica.
Página 4
5. Tecsup Administración de Archivos y Directorios
Agosto 2009
Un tratamiento consistente de la información de los archivos.
Protección de los archivos.
Este estándar del sistema de archivos Linux sigue el mismo
principio básico que la mayoría de los sistemas de archivos UNIX
siguen. Note, sin embargo que este estándar no intenta concordar
en cada aspecto posible con alguna implementación particular del
sistema UNIX. De cualquier forma, muchos de los aspectos de
este estándar están basados en ideas encontradas en UNIX y
sistemas similares a UNIX.
5. Descripción de la Estructura del Sistema de Archivos
5.1. /bin : Binarios de comandos
Binarios de comandos esenciales de usuarios (disponibles
para todos los usuarios).
bin contiene comandos que pueden ser utilizados por
ambos los usuarios y el administrador del sistema, pero
que son requeridos en el modo /mono-usuario (single-
user mode) puede también contener comandos que son
utilizados indirectamente por algunos scripts.
Todos los binarios utilizables sólo por root, tales como
daemons,init,getty, update, etc. Estarían localizados en
/sbin o /usr/sbin dependiendo si son o no esenciales.
No habrá subdirectorios dentro de /bin.
Los binarios de los comandos que no son suficientemente
esenciales para estar en /bin estarán localizados en
/usr/bin, los elementos que son utilizados por usuarios
solamente (pero no por root) (mail,chsh, etc) no son
suficientemente esenciales para estar dentro de la
partición /.
Archivos requeridos en /bin:
Comandos generales:
Los siguientes comandos han sido incluidos porque son
esenciales. Algunos están presentes debido a que
tradicionalmente han estado en /bin.
------------------------------------------------------------------------------
arch, cat, chgrp, chmod, chown, cp, date, dd, df, dmesg,
echo, ed, false,kill, in, login, mxdir, mknod, more,
mount, mv, ps, pwd, rm, rmdir, sed, setserial, sh, sfty, su,
sinc, true, umount, uname.
------------------------------------------------------------------------------
Página 5
6. Administración de Archivos y Directorios Tecsup
Agosto 2009
Comandos para restauración.
Estos comandos se han incluido para hacer posible el
restaurar el sistema (siempre que / esté intacto).
------------------------------------------------------------------------------
tar, gzip, gunzip (enlace hacia gzip), zcat (enlace hacia
gzip).
------------------------------------------------------------------------------
Comandos de red.
Éstos son únicamente los binarios de red que los usuarios
y root querrán o necesitarán ejecutar que no sean los que
están en /usr/bin ó /usr/local/bin
------------------------------------------------------------------------------
domainname, hostname, netstat, ping.
------------------------------------------------------------------------------
5.2. /boot:
Archivos estáticos del cargador de arranque (boot loader).
Este directorio contiene todo para arrancar excepto los
archivos de configuración y el instalador de mapas. En su
sentido más sencillo /boot es para cualquier cosa que se
utiliza antes de que el kernel ejecute /sbin/init.
5.3. /dev : Archivos de dispositivos.
Éste es el directorio de los dispositivos. Contendría un
archivo por cada dispositivo que el kernel de Linux puede
soportar.
dev también contiene un script llamado MAKEDEV el
cual puede crear dispositivos cuando se necesiten. Puede
contener un MAKEDEV local para /dispositivos sólo-
local.
5.4. /etc : Configuración del sistema local a la máquina.
etc contiene archivos y directorios que son locales al
sistema actual. Ningún binario debe ir directamente
dentro de /etc. Los binarios, irán en /sbin o /usr/sbin.
/etc --- Configuración de sistemas locales de máquina.
X11 Archivos de configuración para el x11
skel Esqueletos de configuración de usuarios
Página 6
7. Tecsup Administración de Archivos y Directorios
Agosto 2009
etc/skel es la localidad para los llamados archivos
esqueletos de usuarios, que le son dados por defecto
cuando un nuevo usuario se crea.
etc/X11 es el lugar recomendado para todos los archivos
de configuración de X11 (Entorno Grafico) locales a la
máquina.
La siguiente sección intenta parcialmente examinar la
descripción del contenido de /etc con algunos ejemplos:
Definitivamente ésta no es una lista exhaustiva.
Archivos requeridos en /etc:
Archivos generales:
Estos archivos son necesarios en la mayoría de los
sistemas Linux.
------------------------------------------------------------------------------
adjtime, csh.login, disktab, fdprm, fstab, gettydefs,
group, inittab, issue, ld.so.conf, lilo.conf, magic, motd,
mtab, mtools, passwd, profile, psdatabase, securetty,
shells, syslog.conf, tercamp, ttytype
------------------------------------------------------------------------------
Archivos de Red:
Estos archivos estarían instalados en la mayoría de los
sistemas Linux.
-----------------------------------------------------------------------------
exports, ftpusers, gateways, hosts, host.conf, host.equiv,
host.lpd, inetd.conf, networks, printcap, protocols,
resolv.conf.rpc, services
------------------------------------------------------------------------------
5.5. /home: Directorios hogar de los usuarios.
Esta sección describe una localización sugerida para los
directorios hogar de los usuarios.
En sistemas pequeños, cada directorio de usuario es uno
de los subdirectorios debajo de /home, p.ej.
/home/smith, /home/torvalds, /home/operador, etc.
5.6. /lib: Librerías compartidas y módulos de kernel
esenciales
El directorio /lib contiene aquellas imágenes de las
librerías compartidas que se necesitan para arrancar el
Página 7
8. Administración de Archivos y Directorios Tecsup
Agosto 2009
sistema y ejecutar los comandos en el sistema de archivos
raíz.
5.7. /media: Punto de montaje para sistemas de archivos
montados temporalmente.
Este directorio se ha provisto para que el administrador
pueda montar temporalmente sistemas de archivos
cuando lo necesite. El contenido de este directorio es un
asunto local y no debe afectar la manera en la cual se
ejecuta ningún programa.
5.8. /proc: Información de procesos y del kernel.
El sistema de archivos proc se está convirtiendo en el
estándar para el manejo de información de como otra
información del kernel y de memoria.
5.9. /root: Directorio hogar de root.
El directorio es tradicionalmente el directorio hogar del
usuario root en los sistemas UNIX.
5.10. /sbin: Binarios del Sistema.
Los útiles usados por la administración del sistema (y
otros comandos que sólo root utiliza) están almacenados
en /sbin, /usr/sbin, y /usr/local/sbin. /sbin típicamente
contiene binarios esenciales para arrancar el sistema
además de los binarios en /bin. Cualquier cosa que se
ejecuta después de que se sabe que /usr se ha montado
(cuando no hay problemas) debería estar en /usr/sbin.
Los binarios de administración de sistema sólo-locales
deben estar localizados en /usr/local/sbin.
Decidir que cosa va en los directorios de /sbin es sencillo:
Si un usuario necesitará ejecutarlo, debe de ir en otro lado.
Si sólo será ejecutado por el administrador del sistema o
por root como scripts de administración, entonces debe ir
en /sbin (o en /usr/sbin o en /usr/local/sbin, si el
archivo no es vital para la operación del sistema).
Archivos requeridos en /sbin:
Comandos Generales.
------------------------------------------------------------------------------
clock, getty, init, update, mkswap, swapon, swapoff,
telinit.
------------------------------------------------------------------------------
Página 8
9. Tecsup Administración de Archivos y Directorios
Agosto 2009
Comandos de Apagado.
------------------------------------------------------------------------------
fastboot, fasthalt, halt, reboot, shutdown.
------------------------------------------------------------------------------
Comandos de manejo de sistemas de archivos.
------------------------------------------------------------------------------
fdisk, fsck, fsck.*, mkfs, mkfs.*
------------------------------------------------------------------------------
Comandos de Red.
------------------------------------------------------------------------------
arp, ifconfig, route.
------------------------------------------------------------------------------
5.11. /tmp: Archivos temporales.
tmp se utiliza para archivos temporales. La "persistencia"
de la información que es almacenada en /tmp es diferente
de aquella que sea almacenada en /var/tmp. /tmp puede
ser limpiada en cada arranque o a intervalos relativamente
frecuentes. Por tanto, no se debe esperar que la
información almacenada en /tmp permanezca por algún
periodo largo de tiempo.
Los programas deben utilizar /tmp o /var/tmp (que era
originalmente /usr/tmp) de acuerdo a los requerimientos
esperados de la información, pero no deben confiar en
alguna persistencia temporal particular en cualquier
directorio de almacenamiento temporal.
tmp puede estar e un disco RAM. /var/tmp no debe nunca
localizarse en algún dispositivo RAM.
6. Localización
Habiendo observado lo extenso de la estructura de Linux,
necesitamos herramientas para ubicar los diferentes directorios y
archivos. Las siguientes son algunas herramientas:
find, locate, which, updatedb
Página 9
10. Administración de Archivos y Directorios Tecsup
Agosto 2009
6.1. find
Utilidad para buscar archivos. Esta utilidad empieza
buscando a partir de una ruta indicada y buscará todos los
subdirectorios y nombres de archivos. Cuando no se
indica la ruta, comenzará a buscar de la ubicación de
donde se ejecutó el comando, la ruta será lo que indica el
comando “pwd”.
Sintaxis:
find /path opciones
Opciones
-group: Buscará, de un especificado grupo.
-name: Buscará los files de un determinado nombre.
-user: Buscará files de un determinado usuario.
Ejemplos:
Buscando en el directorio “/home/angie” algún archivo
con el nombre “stuff”
# find /home/angie –name stuff
/home/angie/stuff
Buscando en el directorio “/home/angie” los archivos que
pertenezcan al usuario “root”
# find /home/angie –user root
/home/angie/morestuff
6.2. locate
El comando “locate”, provee una forma práctica de buscar
files de forma indexada. Obteniendo los resultados
rápidamente. La información la obtiene de una base de
datos que indexa los archivos, con la información de los
permisos, de esta forma mostrará los archivos autorizados
del quien realiza la búsqueda.
Sintaxis:
locate [arguments]
La base de datos es actualizada usando el comando
“updatedb”. Únicamente el “root” es autorizado a usar
este comando. Se muestra como es la ejecución de este
comando:
# updatedb
Página 10
11. Tecsup Administración de Archivos y Directorios
Agosto 2009
6.3. which
Muestra la ruta completa de los ejecutables. Esto permite
que visualices la ruta del comando y que se trate del que
estas deseando ejecutar:
Sintaxis:
which [arguments]
Ejemplo:
Buscando el comando “locate”:
# which locate
/usr/bin/locate
6.4. whereis
Comando que localiza archivos de configuración,
manuales, binarios, Fuentes.
Ejemplo:
Buscando el comando “ls”:
# whereis ls
ls: /bin/ls /usr/man/man1/ls.1.gz
7. Redireccionamiento de comandos.
Las acciones generan procesos y estos procesos generan cierta
actividad o resultado. Los comandos en Linux generan:
Entrada Estándar
Salida Estándar
Error Estándar
La salida estándar para mostrar el resultado es la pantalla, cada
vez que ejecutamos un comando el resultado es devuelto a la
pantalla.
Página 11
12. Administración de Archivos y Directorios Tecsup
Agosto 2009
# ls /root
Nos muestra en pantalla el contenido del directorio del
super usuario.
La entrada estándar es el teclado, cada vez que deseamos ingresar
información a un comando este es a través del teclado.
# mail rgonzales
Ejemplo: Este comando espera que el usuario ingrese un
mensaje por teclado que será el contenido del correo que
enviará.
La salida del error estándar es mostrada a través de la pantalla,
cada vez que se ejecuta un comando y este genera un mensaje de
error este es mostrado en la pantalla para ser visto por el usuario.
#ls –A
Ejemplo: Este comando mostrará en pantalla un error que
indica que no existe la opción –A.
Cada uno de estos canales está coordinado por un
número:
Entrada estándar: 0
Salida estándar: 1
Error estándar: 2
7.1. Salida Estándar
El operador que redirecciona la salida estándar es el
símbolo 1>, aunque su forma abreviada es solamente >. Al
utilizar este operador la información que sería mostrada
normalmente en pantalla será redirigida a otro destino.
#ls –l /root 1> lista.txt
Ejemplo: El listado del directorio root será grabado en el
archivo lista.txt (eliminando todo el contenido anterior), si
el archivo no existe será creado.
También podríamos haber usado la versión abreviada (la
más común)
#ls –l /root > lista.txt
7.2. Redireccionar mensaje de error
El error estándar es redireccionado con el operador 2>. En
este caso el mensaje de error producido por los comandos
será redireccionado a otro destino. Igual que en el caso
Página 12
13. Tecsup Administración de Archivos y Directorios
Agosto 2009
anterior cuando redireccionamos el error estándar a un
archivo si este no existe será creado.
# ls anual 2 > error-ls
Ejemplo: El mensaje de error será enviado al archivo
“error-ls”. En el caso que no encontrara la información
“anual” entonces el resultado será un error.
El propósito de almacenar los eventos de error, es útil
para realizar algún diagnostico de los resultados
buscados.
7.3. Adicionando información a un archivo
Cuando deseamos enviar información a un archivo y
queremos que esta se adicione a continuación del
contenido actual debemos usar el operador >>.
Ejemplo: supongamos que usted quiere guardar un
histórico de los usuarios conectados al sistema en el
archivo “salida2.txt”, entonces periódicamente ejecutará el
siguiente comando:
# w >> salida2.txt
7.4. Concatenar
El comando “cat”, tradicionalmente es usado para mostrar
información de un archivo. Aplicando operadores de
direccionamiento se consigue generar unión de los
contenidos de archivos de entrada con destino a un
archivo de salida.
Ejemplo: Se requiere generar un archivo “archivo3” que
contenga la información de los archivos “archivo1”
“archivo2”.
# cat archivo1 archivo2 > archivo3
Página 13
14. Administración de Archivos y Directorios Tecsup
Agosto 2009
7.5. Redirección de la entrada estándar
La redirección de la entrada estándar se realiza con el
operador <. Al utilizar este operador la información que
deseamos pasarle a un comando provendrá de otra fuente
que no sea el teclado, por ejemplo un archivo.
Ejemplo: Se enviará un correo al usuario “msalas” con la
información del archivo “reporte”
# mail msalas <reporte
7.6. Tuberías o pipes
Este mecanismo nos permite pasar la salida de un
comando a otro. Para ello se usa la sintaxis:
<comando1> | <comando2>
La salida de “comando1” será la entrada de “comando2”.
Vamos a ver unos ejemplos:
# rpm -qa | grep <nombre_paquete>
El primero de los dos comandos nos haría una lista de
todos los paquetes instalados. Imaginemos que sólo
queremos saber si tenemos instalado uno en concreto. Con
el segundo comando limitamos la salida a los paquetes
que en el nombre que contengan el patrón que
especificamos en <nombre_paquete>
8. Referencias Bibliográficas
http://www.pathname.com/fhs/
http://lucas.hispalinux.es
FIN DE LA UNIDAD
Página 14