Guía de la jerarquía de directorios Linux: /etc, /var, /home, /bin
La necesidad de guardar información en objetos que puedan ser accedidos posteriormente de forma organizada viene de lejos en los sistemas operativos. Para eso fueron creados los sistemas de archivos. Cada sistema de archivos mantiene una jerarquía de directorios que define su organización y utilidad, y en Linux no es diferente.Básicamente en Linux todo es un archivo, que dependiendo de su tipo, puede convertirse en un archivo común, un directorio, un enlace, un socket, un conducto, un descriptor de dispositivos, etc.
En los sistemas de archivos de forma general, los objetos se organizan de forma jerárquica y cada objeto posee una identificación única dentro de una tabla.
Como ejemplo, veamos el sistema operativo Windows de Microsoft: organiza sus archivos en una partición denominada como unidad "C:\", y en ella tenemos el directorio Windows, que contiene el sistema operativo; el directorio "Archivos de Programas", que contiene la mayoría de los productos instalados, y así sucesivamente. Los archivos se dividen en directorios y subdirectorios diferentes por una cuestión de afinidad y organización. De la misma manera tenemos una organización en Linux.
La identificación de los objetos de un sistema de archivos en Linux se conoce como inode. Este carga la información de dónde está ubicado el objeto en el disco, información de seguridad, fecha y hora de creación y última modificación, entre otras. Cuando creamos un sistema de archivos en Linux, cada dispositivo tiene un número finito de inodes que será directamente proporcional al número de archivos que este dispositivo podrá acomodar.
Básicamente en Linux todo es un archivo, que dependiendo de su tipo, puede convertirse en un archivo común, un directorio, un enlace, un socket, un conducto, un descriptor de dispositivos, etc.
Comparando con Windows, la organización de los directorios en Linux es un poco más compleja. El sistema de archivos en Linux es semelhante a un árbol de cabeza para abajo. En la cima de la jerarquía de Linux existe un directorio raíz denominado simplemente como root e identificado como el símbolo "/". No confunda directorio raíz (root) con el superusuario root.
La estructura del sistema de archivos de Linux está definida por un estándar de mercado llamado Filesystem Hierarchy Standard o FHS, creado por la comunidad Linux en 1994 y mantenido por la Linux Foundation. Actualmente el FHS está en la versión 3.0. Las distribuciones no están obligadas a seguir este estándar, pero entienden la importancia de la ubicación de los archivos y directorios estandarizados.
Toda la estructura de directorios del sistema se crea debajo del root:

/
Directorio raíz del sistema de archivos;
/bin
Contiene los comandos que pueden ser utilizados por los usuarios y por el administrador del sistema. Son requeridos en el modo monousuario o de mantenimiento (single-user mode) y también pueden contener comandos que son utilizados indirectamente por algunos scripts. En él se encuentran los archivos ejecutables, tales como: cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, hostname, kill, ln, more, mount, mv, ps, pwd, rm, rmdir, sed, su, umount y uname;
/boot
Archivos estáticos necesarios para la carga del sistema. Es donde se encuentra ubicada la imagen del Kernel, initramfs y algunos archivos de Grub. Este directorio contiene todo lo necesario para cargar el sistema, excepto los archivos de configuración y el gestor de boot. El /boot incluye el sector maestro de carga del sistema (master boot sectors) y archivos de mapa de sector.
/dev
Abstracción del Kernel donde se encuentran los archivos para acceso de los dispositivos del sistema, como discos, cd-roms, pendrives, puertos seriales, terminales, etc. Los archivos son descriptores que facilitan el acceso a los dispositivos. Este directorio es un pseudo-filesystem, y no existe en el disco. Su contenido, por ejemplo, tiene descriptores de dispositivos como /dev/sda, /dev/cdrom, etc.
/etc
Archivos necesarios para la configuración del sistema. Son necesarios para la carga del sistema operativo. Posee archivos importantes tales como: fstab, exports, passwd, shadow, group, hosts, hosts.allow, hosts.deny, inittab, ld.so.conf, mtab, profile, services, etc. En él también residen los archivos de configuración de las interfaces de red.
Típicamente /etc posee dos subdirectorios:
/etc/X11: Archivos de configuración para la interfaz gráfica de Linux (X Window System);
/etc/skel: Esqueletos de la configuración de usuarios. En el directorio /etc/skel se encuentran ubicados los archivos de "modelo" para los usuarios. El contenido de este directorio se replica para el directorio home de los nuevos usuarios cuando son creados en el sistema.
/home
Generalmente es en este directorio donde se encuentran los directorios home de los usuarios. En estos directorios se localizan scripts de carga de perfil y del shell bash de cada usuario.
/lib
Archivos de bibliotecas esenciales del sistema, utilizados por los programas en /bin y módulos del Kernel. Es común que exista un directorio /lib[arquitectura]. En los procesadores de 64 bits, existe el directorio /lib64. En los procesadores de 32 bits, debe existir un directorio /lib32.
/mnt
Directorio vacío utilizado como punto de montaje de dispositivos en la máquina. Utilizado por el administrador para montar discos.
/media
Directorio vacío utilizado como punto de montaje de dispositivos en la máquina, tales como cdrom, dvd, pendrives, etc.
/proc
Información del Kernel y de los procesos. Es un pseudo-filesystem y no existe realmente en el disco. En este directorio se encuentran las abstracciones de descriptores de todo lo que hay en el Kernel del sistema. Es posible no solo leer los datos, sino también hacer cambios en el comportamiento del Kernel alterando el contenido de archivos en /proc. Haciendo una abstracción de Windows, este directorio sería el "registro" del sistema.
/opt
En este directorio se instalan las aplicaciones que no son de la distribución de Linux, como por ejemplo, base de datos de terceros, software de vectores Cad, etc.
/root
Directorio home del superusuario root. Dependiendo de la distribución puede estar presente o no;
/run
Este directorio contiene información del sistema desde la última carga. Los archivos de este directorio son borrados o reiniciados al inicio del proceso de boot. Archivos como aquellos que indican el PID del proceso en ejecución deben residir en este directorio.
/sbin
Archivos esenciales del sistema, como aplicaciones y utilitarios para la administración de la máquina. Normalmente solo el superusuario tiene acceso a estos archivos, tales como: fdiskm fsck, ifconfig, init, mkfs, mkswap, route, reboot, swapon y swapoff.
/tmp
Directorio de archivos temporales. En algunas distribuciones este directorio se monta en memoria. Se recomienda que su contenido sea borrado de vez en cuando o en cada reboot.
/usr
Archivos pertenecientes a los usuarios y la segunda mayor jerarquía de directorios en Linux. Su contenido puede ser distribuido a través de la red para diversos sistemas Linux de la misma distribución sin problema alguno. Este tiene algunos subdirectorios a saber:
/usr/bin: Herramientas y comandos auxiliares de usuarios, así como interpretes de programación, como perl, python, etc;
/usr/include: Encabezados y bibliotecas del lenguaje C;
/usr/lib y /usr/lib64: bibliotecas de aplicaciones de usuarios;
/usr/libexec: binarios que no son ejecutados normalmente por usuarios;
/usr/local: jerarquía de directorios para instalación de aplicaciones locales en el sistema. Posee varios subdirectorios como bin, etc, include, lib, man, sbin, share y src;
/usr/sbin: contiene herramientas no esenciales, pero exclusivas de la administración del sistema.
/usr/share: archivos de solo lectura de arquitectura independiente. Son archivos que pueden ser compartidos entre distribuciones de Linux iguales, independiente de la arquitectura. El directorio man por ejemplo es donde residen los manuales de los comandos y se encuentra en /usr/share.
/usr/src: puede contener archivos de código fuente de programas.
/var
Directorio donde se guardan información variable sobre el sistema, como archivos de log, archivos de e-mail etc. Posee subdirectorios importantes, a saber:
/var/cache: mantiene información de cache de las aplicaciones como cálculos, etc;
/var/lib: mantiene información de estado de las aplicaciones;
/var/lock: mantiene archivos de bloqueo que retienen dispositivos para uso exclusivo de alguna aplicación determinada;
/var/log: mantiene los archivos de log del sistema, tales como messages, lastlog y wtmp.
/var/mail: mantiene los directorios de cuentas de email de los usuarios;
/var/opt: mantiene los archivos variables de las aplicaciones;
/var/run: la funcionalidad de este directorio fue movida a /run.
/var/spool: mantiene datos de procesos que mantienen colas de archivos, tales como impresión y salida de email;
/var/tmp: mantiene los archivos temporales de las aplicaciones que necesiten ser preservados entre el reboot del sistema
Archivos y Directorios Ocultos
Para ocultar los archivos y directorios en Linux, basta con renombrar su nombre, iniciándolo con un punto ".".
Por ejemplo, al listar el contenido de una carpeta, el directorio "musicas" está presente:
$ lsarquivo musicas
Si renombramos el directorio musicas, iniciando con un ".", este no aparecerá más en la lista de archivos y directorios:
$ mv musicas .musicas
El comando "mv" sirve para mover, o renombrar archivos y directorios.
Al listar la carpeta, el directorio "musicas" no aparecerá:
$ lsarquivo
Los archivos y directorios ocultos solo aparecerán en el listado con la opción "-a" del comando ls:
$ ls -a. .. arquivo .musicas
Directorio Actual y Directorio Anterior
Todo directorio en Linux posee dos archivos especiales, ocultos.
El primer archivo es el punto "."
Este sirve para referenciar el directorio actual.
El segundo archivo es el punto-punto ".."
Este sirve para referenciar el directorio anterior.
De esta forma, estos dos archivos especiales sirven para hacer referencia relativa a los archivos y directorios del sistema. Se llama relativa, porque la referencia depende del punto de partida, del directorio actual.
En contraposición, una referencia absoluta, o ruta completa, es la referencia de un archivo o directorio, tomando como base el directorio raíz "/".
Para saber el directorio actual, se debe usar el comando "pwd".
Observe el directorio actual:
$ pwd/home/carlacruz
Si queremos listar el contenido del directorio, se puede usar el comando "ls":
$ lsbin public_html
Para listar el contenido de algún archivo dentro del directorio public_html, se puede usar la referencia relativa, a partir del directorio actual, usando el archivo ".":
$ cat ./public_html/arquivo
Este es un archivo de texto de ejemplo
O usar la ruta absoluta:
$ cat /home/carlacruz/public_html/arquivo
Este es un archivo de texto de ejemplo
Si queremos listar el contenido del directorio /home, se puede de la misma forma usar el archivo especial ".." que hace referencia al directorio anterior:
$ ls ../carlacruz uiraribeiro arthur
El archivo especial ".." también se puede usar para navegar en los directorios, con el comando "cd":
$ cd ..$ pwd/home
$ cd ..$ pwd/
Observe que entre el comando "cd" y el archivo especial ".." es necesario un espacio, para separar el comando "cd" y el archivo especial "..".
Directorio Home
Cada usuario en Linux tiene un directorio especial único, llamado directorio HOME.
Es en su directorio HOME donde cada usuario puede crear, borrar, mover y renombrar archivos y carpetas a voluntad.
Ningún otro usuario común del sistema puede tener acceso al directorio home de otro usuario. Solo el superusuario root puede tener acceso a cualquier directorio del sistema.
Es en el directorio home donde también residen archivos especiales de configuración del perfil y del entorno de trabajo de los usuarios, así como sus claves privadas de acceso a otros hosts y de cifrado.
El estándar de la jerarquía de archivos de Linux determina que el directorio HOME de los usuarios se creen dentro del directorio /home.
Es en el archivo de cuentas de usuario /etc/passwd donde se define la ruta del directorio home de los usuarios:
$ cat /etc/passwd | grep carlacarla:1000:1000:Carla Cruz:/home/carlacruz:/bin/bash
La variable $HOME mantiene la ruta del directorio HOME del usuario conectado al sistema:
$ echo $HOME/home/carlacruz
El Linux mantiene un atajo para el directorio HOME del usuario conectado a través del símbolo tilde "~":
$ cd ~$ pwd/home/carlacruz
De esta forma, se puede usar la ruta del "~" para hacer referencia a los archivos y directorios del directorio HOME del usuario conectado:
$ cat ~/public_html/arquivo
Este é um arquivo texto de exemplo.
Conclusión
Saber la jerarquía de directorios en Linux es algo esencial para los administradores de Linux/Unix. Explore cada uno de sus directorios, comandos y archivos.
Aprenda mucho más sobre Linux en nuestro curso en línea. Puede realizar la inscripción aquí. Si ya tiene una cuenta, o quiere crear una, simplemente ingrese o cree su usuario aquí.
¿Le gustó? Comparta
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.