La estructura de directorios de Linux, explicada
La estructura de directorios de Linux es fundamental para entender cómo funciona este poderoso sistema operativo utilizado ampliamente en servidores y computadoras personales.
En Linux, todo comienza con el directorio raíz, simbolizado por una barra inclinada (/), que actúa como el punto de partida desde donde se ramifican todos los demás directorios.
Dentro de esta jerarquía, encontraremos directorios esenciales como /bin, que contiene ejecutables básicos del sistema, y /etc, donde se almacenan archivos de configuración críticos.
El directorio /home es particularmente importante para los usuarios, ya que alberga sus archivos personales y configuraciones.
Otro directorio clave es /var, que guarda archivos variables como registros del sistema y colas de impresión.
Comprender cómo están organizados estos directorios no solo facilita la navegación y gestión del sistema, sino que también es crucial para la seguridad y eficiencia al administrar servidores Linux.
Esta estructura jerárquica y lógica no solo optimiza el funcionamiento del sistema, sino que también permite una fácil escalabilidad y personalización, características que hacen de Linux una opción popular entre desarrolladores y administradores de sistemas en Argentina y el mundo.
Si vienes de Windows, la estructura del sistema de archivos de Linux puede parecer particularmente extraña.
La unidad C:\ y las letras de la unidad desaparecieron, reemplazadas por / y directorios que suenan crípticos, la mayoría de los cuales tienen nombres de tres letras.
El Estándar de jerarquía del sistema de archivos (FHS) define la estructura de los sistemas de archivos en Linux y otros sistemas operativos similares a UNIX. Sin embargo, los sistemas de archivos de Linux también contienen algunos directorios que aún no están definidos por el estándar.
/ – El directorio raíz
Todo lo que hay en su sistema Linux se encuentra en el directorio /, conocido como directorio raíz. Puede pensar que el directorio / es similar al directorio C: en Windows, pero esto no es estrictamente cierto, ya que Linux no tiene letras de unidad. Mientras que otra partición estaría ubicada en D:\ en Windows, esta otra partición aparecería en otra carpeta en / en Linux.
/bin – Binarios de usuario esenciales
El directorio /bin contiene los binarios (programas) de usuario esenciales que deben estar presentes cuando el sistema se monta en modo de usuario único. Las aplicaciones como Firefox, si no están instaladas como Snaps, se almacenan en /usr/bin, mientras que los programas y utilidades importantes del sistema, como el shell bash, se encuentran en /bin. El directorio /usr puede estar almacenado en otra partición. Colocar estos archivos en el directorio /bin garantiza que el sistema tendrá estas importantes utilidades incluso si no hay otros sistemas de archivos montados. El directorio /sbin es similar: contiene archivos binarios esenciales para la administración del sistema.
/boot – Archivos de arranque estáticos
El directorio /boot contiene los archivos necesarios para iniciar el sistema. Por ejemplo, los archivos del cargador de arranque GRUB y sus kernels de Linux se almacenan aquí. Sin embargo, los archivos de configuración del cargador de arranque no se encuentran aquí; están en/etc con los otros archivos de configuración.
/cdrom – Punto de montaje histórico para CD-ROM
El directorio /cdrom no forma parte del estándar FHS, pero aún lo encontrará en Ubuntu y otros sistemas operativos. Es una ubicación temporal para los CD-ROM insertados en el sistema. Sin embargo, la ubicación estándar para los medios temporales está dentro del directorio /media.
/dev – Archivos de dispositivo
Linux expone los dispositivos como archivos y el directorio /dev contiene una serie de archivos especiales que representan dispositivos. Estos no son archivos reales tal como los conocemos, pero aparecen como archivos. Por ejemplo, /dev/sda representa la primera unidad SATA del sistema. Si desea particionarlo, puede iniciar un editor de particiones y decirle que edite /dev/sda.
Este directorio también contiene pseudodispositivos, que son dispositivos virtuales que en realidad no corresponden al hardware. Por ejemplo, /dev/random produce números aleatorios. /dev/null es un dispositivo especial que no produce resultados y descarta automáticamente todas las entradas; cuando canalizas la salida de un comando a /dev/null, lo descartas.
/etc – Archivos de configuración
El directorio /etc contiene archivos de configuración, que generalmente se pueden editar manualmente en un editor de texto. Tenga en cuenta que el directorio /etc/ contiene archivos de configuración de todo el sistema. Los archivos de configuración específicos del usuario se encuentran en el directorio de inicio de cada usuario.
/home – Carpetas de inicio
El directorio /home contiene una carpeta de inicio para cada usuario. Por ejemplo, si su nombre de usuario es bob, tiene una carpeta de inicio ubicada en /home/bob. Esta carpeta de inicio contiene los archivos de datos del usuario y los archivos de configuración específicos del usuario. Cada usuario solo tiene acceso de escritura a su propia carpeta de inicio y debe obtener permisos elevados (convertirse en usuario root) para modificar otros archivos en el sistema.
/lib – Bibliotecas compartidas esenciales
El directorio /lib contiene las bibliotecas que necesitan los binarios esenciales en las carpetas /bin y /sbin. Las bibliotecas que necesitan los binarios en la carpeta /usr/bin se encuentran en /usr/lib. También verá una carpeta homóloga /lib64 en sistemas de 64 bits.
/perdido+encontrado – Archivos recuperados
Cada sistema de archivos de Linux tiene un directorio perdido+encontrado. Si el sistema de archivos falla, se realizará una verificación del sistema de archivos en el próximo inicio. Cualquier archivo corrupto encontrado se colocará en el directorio perdido+encontrado, para que pueda intentar recuperar la mayor cantidad de datos posible.
El directorio /media contiene subdirectorios donde se montan los dispositivos de medios extraíbles insertados en la computadora. Por ejemplo, cuando inserta un CD en su sistema Linux, se creará automáticamente un directorio dentro del directorio /media. Puede acceder al contenido del CD dentro de este directorio.
/mnt – Puntos de montaje temporales
Históricamente hablando, el directorio /mnt es donde los administradores del sistema montaban sistemas de archivos temporales mientras los usaban. Por ejemplo, si está montando una partición de Windows para realizar algunas operaciones de recuperación de archivos, puede montarla en /mnt/windows. Sin embargo, puede montar otros sistemas de archivos en cualquier parte del sistema.
/opt – Paquetes opcionales
El directorio /opt contiene subdirectorios para paquetes de software opcionales. Es comúnmente utilizado por software propietario que no obedece a la jerarquía estándar del sistema de archivos. Por ejemplo, un programa propietario podría volcar sus archivos en /opt/application cuando lo instale.
/proc – Archivos de proceso y kernel
El directorio /proc es similar al directorio /dev porque no contiene archivos estándar. Contiene archivos especiales que representan información del sistema y del proceso.
/root – Directorio de inicio raíz
El directorio /root es el directorio de inicio del usuario root. En lugar de estar ubicado en /home/root, está ubicado en /root. Esto es distinto de /, que es el directorio raíz del sistema.
/run – Archivos de estado de la aplicación
El directorio /run brinda a las aplicaciones un lugar estándar para almacenar los archivos transitorios que necesitan, como sockets e ID de procesos. Estos archivos no se pueden almacenar en /tmp porque es posible que se eliminen.
/sbin – Binarios de administración del sistema
El directorio /sbin es similar al directorio /bin. Contiene archivos binarios esenciales que generalmente están destinados a ser ejecutados por el usuario root para la administración del sistema.
/snap – Almacenamiento para paquetes Snap
Otro directorio que no forma parte de FHS pero que es común ver en estos días es /snap. Contiene paquetes Snap instalados y otros archivos asociados con Snap. Ubuntu ahora usa Snaps de forma predeterminada, pero si usas una distribución diferente que no lo hace, no verás este directorio.
/srv – Datos de servicio
El directorio /srv contiene «datos de los servicios proporcionados por el sistema. Si estuviera utilizando el servidor HTTP Apache para servir un sitio web, probablemente almacenaría los archivos de su sitio web en un directorio dentro del directorio /srv.
/tmp – Archivos temporales
Las aplicaciones almacenan archivos temporales en el directorio /tmp. Estos archivos generalmente se eliminan cada vez que se reinicia el sistema y pueden eliminarse en cualquier momento mediante utilidades como systemd-tmpfiles.
/usr – Binarios de usuario y datos de sólo lectura
El directorio /usr contiene aplicaciones y archivos utilizados por los usuarios, a diferencia de las aplicaciones y archivos utilizados por el sistema. Por ejemplo, las aplicaciones no esenciales se encuentran dentro del directorio /usr/bin en lugar del directorio /bin y los archivos binarios de administración del sistema no esenciales se encuentran en el directorio /usr/sbin en lugar del directorio /sbin. Las bibliotecas para cada uno se encuentran dentro del directorio /usr/lib. El directorio /usr también contiene otros directorios. Por ejemplo, los archivos independientes de la arquitectura, como los gráficos, se encuentran en /usr/share.
El directorio /usr/local es donde se instalan las aplicaciones compiladas localmente de forma predeterminada. Esto evita que estropeen el resto del sistema.
/var – Archivos de datos variables
El directorio /var es la contraparte grabable del directorio /usr, que debe ser de sólo lectura en funcionamiento normal. Los archivos de registro y todo lo demás que normalmente se escribiría en /usr durante el funcionamiento normal se escriben en el directorio /var. Por ejemplo, encontrará archivos de registro en /var/log.
Para obtener información técnica más detallada sobre la jerarquía del sistema de archivos de Linux, consulte el Documentación del estándar de jerarquía del sistema de archivos.