Linux, estructura general de directorios

Estructura General de Directorios.

La estructura de directorios en Linux es, para quien empieza a adentrarse en este sistema operativo, uno de los campos que mayor confusión aporta. Intentaré a través de este post, aclarar un poco dicha estructura, que en realidad es mucho más sencilla de lo que puede parecer a priori. Encuadrados en dos tipos básicos Estáticos/Dinámicos y Compartibles/Restringidos se organiza todo el árbol de directorios Linux.

Linux cumple el Estándar de Jerarquía de Ficheros (FHS: FileSystem Hierarchy Standar) que define las bases sobre las que se establece la estructura de árbol de directorios. En estos momentos la versión establecida de dicho Estándar es la 2.3 (definida en el año 2004), podemos consultar todo el documento (algo interesante si quieres profundizar en el tema) desde este enlace (en ingles), o desde este otro (en español)

La clasificación tipológica a la que nos referíamos antes la explica la siguiente tabla

Estáticos

Contiene archivos que sólo root puede cambiar. Binarios, bibliotecas, documentación. Sin embargo estos archivos están disponibles para su lectura por cualquier otro usuario del sistema.Algunos de los Directorios contenidos en esta categoría son:

/bin, /sbin/, /opt, /boot, /usr/bin, etc

Dinámicos

Esta categoría agrupa directorios cuyos ficheros no son estáticos, es decir, cambian. De donde se deriva que dichos ficheros están disponibles tanto para ser leídos como para ser escritos (algunos sólo por el usuario propietario y por root). De estos tipos de directorios se suele hacer copias de seguridad más a menudo que de los directorios Estáticos. Participan de esta categoría directorios tales como:/var/mail, /var/spool, /var/run, /var/lock, /home, etc..

Compartibles

Como su propio nombre indica son directorios que pueden compartirse a través de red, estar en un ordenador y ser usados desde otro.Ejemplos de esta categoría son:

/usr/bin, /opt

Restringidos

Contiene directorios y archivos que no se pueden compartir, su acceso y modificación esta restringido al superusuario./etc, /boot, /var/run, /var/lock, etc…

Todos los directorios de Linux/Unix cuelgan del denominado Directorio Raíz “ / “ . Podría a primera vista hacer una comparación con el directorio C:\ de Windows, sin embargo existen notables diferencias al respecto.

Del directorio < / > de Linux cuelgan todos los dispositivos y las distintas particiones de todos los discos y unidades usados por el sistema. Contrariamente a Windows que nombra a cada partición y dispositivo por una letra distinta A: , C: , D: , etc… Las particiones, discos, y dispositivos en general, son “montados” en Linux en un directorio especial, que está siempre por debajo del directorio raíz.

El concepto de montaje lo explicaremos más adelante, de momento sólo decir que el montaje de una unidad, partición o dispositivo es el momento en que este comienza a formar parte de nuestro sistema y por tanto, comienza a estar disponible para trabajar con el. En Linux podemos montar y desmontar particiones a nuestro antojo en el momento que queramos usarlas o que queramos hacer que dejen de estar accesibles por nuestro sistema.

Seguidamente se expone en una tabla la explicación de la funcionalidad de los distintos directorios de Linux

/

Directorio Raíz (Directorio principal) contenedor de toda la estructura de directorios y ficheros del sistema. Todo lo que existe en Linux, esta en algún punto por debajo de este directorio.

/bin

Comandos y Binarios esenciales. Ejecutables accesibles para todos los usuarios. Habitualmente al referirnos a “archivos binarios” nos estamos refiriendo a ejecutables ya compilados, aunque estrictamente el termino comprende una gama mayor de elementos.

/boot

Contiene el Kernel (núcleo del sistema operativo), y el initrd, son archivos utilizados durante el arranque del sistema

/dev

Agrupa los dispositivos esenciales, almacenamiento, teclado, terminales, sonido, video, cd, dvd, impresoras, etc.

/etc

Archivos de configuracion de nuestro sistema, nombre del host, red, configuraciones de los programas que instalamos, etc

/etc/opt

(no confundir con /opt) Este directorio /etc/opt, contiene la configuracion de programas que estan instalados en el directorio estático /opt

/etc/X11

Archivos de configuración de servidores X Windows System (nuestro sistema de ventanas en Linux)

/etc/sgml

Archivo de configuracion del sistema SGML (Estandar Generalizado de Etiquetado de Documentos)

/etc/xml

Configuración de XML

/home

Es el directorio donde se guardan los usuarios y archivos de usuario del sistema (algo parecido al Documents and Settings de windows). Sólo hay una excepción para esto y es el usuario root, que tiene su propio directorio /root. Los demás cuelgan del directorio /home. Por ejemplo:/home/Juan

/home/Sara

/lib

Librerías (o más comúnmente Bibliotecas) esenciales compartidas por los programas alojados dentro de los directorios /bin y /sbin, así como por el núcleo del sistema (kernel)

/mnt

Sistemas de ficheros montados temporalmente, como por ejemplo una unidad usb o un disco duro. Existen diferencias entre el uso de este, y el directorio /media entre las distintas distribuciones de Linux, por ejemplo, Ubuntu usa /media para montar las particiones windows (en el caso que tengamos ambos sistemas instalados en nuestro equipo)

/media

Contiene los puntos de montaje para dispositivos como unidades lectoras de CD y DVD. No confundir con el directorio /dev. Tanto /media como /mnt son directorios que contienen los puntos de montaje. No los dispositivos en si.

/opt

Paquetes de aplicaciones estáticas, es decir pueden ser usadas por los usuarios.

/proc

Sistema de ficheros virtual que documenta sucesos y estados del núcleo, contiene principalmente ficheros de texto, información de las irq, memoria, interrupciones, etc.

/root

Directorio del administrador

/sbin

Binarios esenciales, comandos y programas para uso exclusivo del administrador. Ejemplos de estos son, init, fdisk, ifconfig, etc. Algunos de estos comandos pueden ser ejecutados por los usuarios, siempre y cuando el administrador haya concedido a este usuario los permisos adecuados.

/tmp

Archivos temporales del sistema, temporales de edición, navegadores, etc.

/srv

Datos específicamente servidos por nuestro sistema

/usr

Dentro de este directorio tenemos una subjeraquia para datos compartidos de solo lectura. Este directorio puede ser compartido por múltiples ordenadores, pero no debe contener datos del ordenador que los comparte.

/usr/bin

Binarios no administrativos disponibles para todos los usuarios.

/usr/sbin

Sistema de binarios no esenciales, por ejemplo demonios ejecutados normalmente (aunque no tiene porqué) durante el arranque. Un demonio es un tipo de proceso no interactivo, ejecutado en segundo plano son el equivalente en Linux a los llamados Servicios en Windows.

/usr/include

Contiene archivos de cabecera (headers files o include files) son archivos que son aprovechado por otros archivos incluyéndolos en su contenido a través de una referencia a los primeros en su cabecera.

/usr/lib

Bibliotecas compartidas de los binarios

/usr/share

Datos compartidos independientes de la arquitectura del sistema. Imágenes, ficheros de texto. Dentro de este directorio se encuentra gran parte de la documentación del sistema

/usr/src

Directorio que contiene los códigos fuente de los programas, como por ejemplo el código fuente del Kernel. Esto permite a un administrador, modificar el funcionamiento del núcleo del sistema, aportándole mejoras o funcionalidades que en principio no estaban ahí.

/usr/X11R6

Sistema de X Windows Version 11

/usr/local

Datos locales del host. Se trata de una subjerarquia para datos compartidos de solo lectur.

/var

Ficheros variables, logs, bases de datos, servidores http, ftp, colas de correo, algunos ficheros temporales

/var/cache

Memoria cache de los datos de aplicaciones, el directorio /tmp tambien tiene un uso parecido en ocasiones

/var/lock

Archivos que hacen un seguimiento de los recursos utilizados en el momento.

/var/crash

Información referente a las caidas del sistema, es un deposito de logs para cuando el sistema falla y se cae.

/var/games

Datos variables para juegos.

/var/logs

Logs del sistema y aplicaciones

/var/mail

Buzón de correos o mensajes de los usuarios. Cuando no se utiliza el cifrado, esta información suele almacenarse en la carpeta personal del usuario

/var/opt

Datos variables del directorio /opt

/var/run

Información reciente. Recoge el funcionamiento del sistema desde el ultimo arranque. Usuarios logueados, demonios en ejecución, etc

/var/spool

Tareas para ser procesadas (las llamadas colas) colas de impresión, correos no leídos

/var/spool/mail

Ubicación de los correos de los usuarios

/var/tmp

Archivos temporales que no se borran entre sesiones o reinicios del sistema, pero que aun así pueden ser prescindibles.

Un par de casos especiales: Los directorios /proc y /sys

/proc

Como ya hemos adelantado en la tabla anterior, /proc es un sistema de archivos virtual, no se encuentra en ningun dispositivo fisico, sino que es construido y presentado dinámicamente cada vez que lo solicitamos al nucleo, al igual que el contenido de sus archivos y subdirectorios.

El contenido refleja el estado del nucleo en el momento que nos lo presenta

Podemos ver su configuracion de montaje a través del /etc/fstab:

more /etc/fstab

# /etc/fstab: static file system information.

#

# Use ‘blkid’ to print the universally unique identifier for a

# device; this may be used with UUID= as a more robust way to name devices

# that works even if disks are added and removed. See fstab(5).

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc nodev,noexec,nosuid 0 0

# / was on /dev/sda1 during installation

UUID=14d0282d-930c-4a49-b3c5-12c963bb7556 / ext4 errors=remount -ro 0 1

# swap was on /dev/sda5 during installation

UUID=af0a08cf-b394-4ca8-9262-b319b95b166a none swap sw 0 0

/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Podemos ver su contenido ejecutando por ejemplo algunos comandos cat

cat /proc/swaps

Filename Type Size Used Priority

/dev/sda5 partition 5295100 47020 -1

cat /proc/version

Linux version 3.2.0-24-generic (buildd@crested) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012

/sys

El directorio /sys utiliza el sistema de archivos virtual sysfs, especifico de los kernels 2.6 en adelante, contiene una información similar al /proc pero muestra una vista de dispositivo jerarquico con información especifica de los dispositivos de conexión en caliente.

Podemos ver su contenido con comandos de este tipo:

ls -l /sys/block

total 0

lrwxrwxrwx 1 root root 0 jul 11 13:40 fd0 -> ../devices/platform/floppy.0/block/fd0

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop0 -> ../devices/virtual/block/loop0

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop1 -> ../devices/virtual/block/loop1

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop2 -> ../devices/virtual/block/loop2

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop3 -> ../devices/virtual/block/loop3

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop4 -> ../devices/virtual/block/loop4

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop5 -> ../devices/virtual/block/loop5

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop6 -> ../devices/virtual/block/loop6

lrwxrwxrwx 1 root root 0 jul 11 13:40 loop7 -> ../devices/virtual/block/loop7

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram0 -> ../devices/virtual/block/ram0

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram1 -> ../devices/virtual/block/ram1

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram10 -> ../devices/virtual/block/ram10

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram11 -> ../devices/virtual/block/ram11

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram12 -> ../devices/virtual/block/ram12

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram13 -> ../devices/virtual/block/ram13

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram14 -> ../devices/virtual/block/ram14

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram15 -> ../devices/virtual/block/ram15

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram2 -> ../devices/virtual/block/ram2

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram3 -> ../devices/virtual/block/ram3

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram4 -> ../devices/virtual/block/ram4

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram5 -> ../devices/virtual/block/ram5

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram6 -> ../devices/virtual/block/ram6

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram7 -> ../devices/virtual/block/ram7

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram8 -> ../devices/virtual/block/ram8

lrwxrwxrwx 1 root root 0 jul 11 13:40 ram9 -> ../devices/virtual/block/ram9

lrwxrwxrwx 1 root root 0 jul 11 11:27 sda -> ../devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda

lrwxrwxrwx 1 root root 0 jul 11 13:40 sdb -> ../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.3/host3/target3:0:0/3:0:0:0/block/sdb

lrwxrwxrwx 1 root root 0 jul 11 13:40 sr0 -> ../devices/pci0000:00/0000:00:07.1/host1/target1:0:0/1:0:0:0/block/sr0

Articulo Anterior: Tipos de Archivos en Linux Siguiente Articulo: Comandos Básicos II
Anuncios

8 pensamientos en “Linux, estructura general de directorios

  1. Pingback: LINUX – INSTALA Y CONFIGURA EQUIPOS DE COMPUTO Y PERIFÉRICOS

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s