Jerarquia-de-GNU-Linux

Si eres nuevo en la línea de comandos de GNU/Linux, puede que te preguntes por qué hay tantos directorios inusuales, para qué sirven y por qué las cosas están organizadas como están. De hecho, si no estás acostumbrado a la forma en que GNU/Linux organiza los archivos, los directorios pueden parecer totalmente arbitrarios con nombres impares y truncados y, en muchos casos, nombres redundantes. Resulta que hay un método para esta locura basado en décadas de similitud a UNIX, y en este artículo, proporciono una introducción a la estructura de directorios de GNU/Linux. Bueno, ya te di una pista, la jerarquía de directorios en GNU similar a la de UNIX y otros sistemas operativos que salieron de UNIX, como macOS y FreeBSD.

Aunque cada distribución tiene sus propias peculiaridades, la mayoría se ajusta (en su mayor parte) al Estándar de Jerarquía de Sistemas de Archivos (FHS). El proyecto de la FHS se inició en 1993, y el objetivo era llegar a un consenso sobre cómo organizar los directorios y qué archivos deberían almacenarse en cada lugar, de modo que las distribuciones pudieran tener un único punto de referencia desde el que trabajar. Muchas de las decisiones sobre la estructura de directorios se basaban en estructuras de directorios UNIX tradicionales con un enfoque en los servidores y con la suposición de que el espacio en disco era escaso, por lo que las máquinas probablemente tendrían múltiples discos duros.

Echad un vistazo a esto:

Jerarquia-en-OSX

Jerarquía en OSX

Jerarquia-en-una-BSD

Jerarquía en una BSD

Jerarquia-de-GNU-Linux

La jerarquía de GNU/Linux

/bin y /sbin

Los directorios /bin y /sbin sirven para almacenar archivos ejecutables binarios. Ambos directorios almacenan ejecutables que se consideran esenciales para arrancar el sistema (como el comando mount). La principal diferencia entre estos directorios es que el directorio /sbin está destinado a los binarios del sistema, o binarios que los administradores utilizarán para gestionar el sistema.

/boot

Este directorio almacena todos los archivos del cargador de arranque (en estos días, esto es típicamente GRUB), los archivos del núcleo y los archivos initrd. A menudo se trata como una partición pequeña y separada, para que el cargador de arranque pueda leerla más fácilmente. Con /boot en una partición separada, tu sistema de ficheros raíz puede usar características más sofisticadas que requieren soporte de kernel, ya sea un sistema de ficheros exótico, encriptación de disco o gestión de volúmenes lógicos.

/etc

El directorio /etc sirve para almacenar los archivos de configuración del sistema. Si necesitas configurar un servicio en un sistema GNU/Linux, o cambiar la configuración de red u otra configuración central, este es el primer lugar para buscar. También es un directorio pequeño y fácil de respaldar que contiene la mayoría de las personalizaciones que puedes realizar en tu equipo a nivel de sistema.

/home

El directorio /home es la ubicación en sistemas GNU/Linux donde los usuarios reciben directorios para almacenar sus propios archivos. Cada directorio bajo /home lleva el nombre de un usuario en particular y es propiedad de ese usuario. En un servidor, estos directorios pueden almacenar el correo electrónico de los usuarios, sus claves SSH, o incluso, a veces, los usuarios de servicios locales se ejecutan en puertos altos.

En los sistemas de escritorio, el directorio /home es probablemente el directorio principal con el que interactúan los usuarios. Cualquier configuración de escritorio, imágenes, medios, documentos u otros archivos que los usuarios necesiten terminan siendo almacenados en sus directorios /home. En un escritorio, éste es el directorio más importante del que se debe hacer una copia de seguridad, y a menudo es un directorio al que se le ha asignado su propia partición. Dando a /home su propia partición, puedes experimentar con diferentes distribuciones de GNU/Linux y reinstalar el sistema completo en una partición / separada, y cuando montes esta partición /home, todos tus archivos y configuraciones estarán allí donde los dejó. Es considerado como el espacio de usuario.

/lib

El directorio /lib almacena las librerías compartidas esenciales que los binarios esenciales de /bin y /sbin necesitan ejecutar. Este es también el directorio donde se almacenan los módulos del núcleo.

/usr, /usr/bin, /usr/lib y /usr/sbin

El directorio /usr (que ha sido utilizado tanto para el repositorio de fuentes UNIX como para los recursos del sistema UNIX) está pensado para ser un directorio de sólo lectura que almacena archivos que no son necesarios para arrancar el sistema. En general, cuando instalas software adicional de tu distribución, sus binarios, librerías y archivos de soporte van aquí en sus correspondientes directorios /usr/bin, /usr/sbin o /usr/lib, entre otros. Cuando el almacenamiento era deficiente, a menudo se montaba este directorio por separado en su propio disco más grande, de modo que podía crecer de forma independiente a medida que se añadía nuevo software.

Hoy en día, hay menos necesidad de tener este tipo de separación lógica, en particular porque los sistemas tienden a tenerlo todo en una sola partición raíz grande, y el archivo initrd tiende a tener las herramientas necesarias para montar ese sistema de archivos. Algunas distribuciones están empezando a fusionar /bin, /sbin y /lib con sus correspondientes directorios /usr mediante enlaces simbólicos.

/usr/local

El directorio /usr/local es una versión especial de /usr que tiene su propia estructura interna de directorios bin, lib y sbin, pero /usr/local está diseñado para ser un lugar donde los usuarios puedan instalar su propio software fuera del software proporcionado por la distribución sin preocuparse de sobrescribir ningún archivo de distribución.

/opt

Los debates entre /usr/local y /opt son legendarios. Esencialmente, ambos directorios tienen el mismo propósito -proporcionar un lugar para que los usuarios instalen software fuera de sus zonas críticas- pero el directorio /opt lo organiza de forma diferente. En lugar de almacenar binarios y librerías para diferentes programas juntos en un directorio compartido, como /usr y /usr/local, el directorio /opt otorga a cada programa su propio subdirectorio, y organiza sus archivos como le plazca. La idea aquí es que, en teoría, se puede desinstalar el software en /opt simplemente eliminando el directorio de ese software.

/root

El directorio /root es un directorio raíz especial para el usuario root del sistema. Es propiedad y legible sólo por el usuario root, y está diseñado de otra manera para funcionar como un directorio /home pero para los archivos y configuraciones que el usuario root necesita. Hoy en día, muchos sistemas deshabilitan al usuario root a favor de usar sudo para obtener privilegios de superusuario, por lo que este directorio no se usa tanto.

/var

Como he mencionado, los servidores UNIX clásicos tenían un espacio en disco premium, y el directorio /var fue diseñado para almacenar archivos que pueden variar mucho en tamaño o que se pueden escribir con frecuencia. A diferencia de /usr, que es de sólo lectura, el directorio /var definitivamente necesita ser escribible, porque dentro de él encontrará archivos de registro, spools de servidor de correo y otros archivos que pueden ir y venir o que de otra manera podrían crecer en tamaño de forma impredecible.

Incluso en estos días, al menos en los servidores, si tuvieras que elegir un directorio de nivel raíz para ponerlo en una buena porción de tu propio disco, el directorio /var sería el primero en la lista, no sólo porque podría crecer bastante en tamaño, sino también porque podrías querer poner /var en un disco que esté mejor optimizado para las escrituras pesadas. Además, si tienes todos tus directorios dentro de una partición raíz grande, y se queda sin espacio en disco, el directorio /var es un buen lugar para comenzar tu búsqueda de archivos a eliminar.

/dev

Aquís encontrará archivos de dispositivos. Los sistemas UNIX tienen un principio de “todo es un archivo” que significa que incluso tu hardware termina con un archivo. Este directorio contiene archivos para dispositivos en tu sistema desde discos y particiones hasta ratones y teclados.

/proc y /sys

Además de /dev, otros dos directorios terminan con archivos dinámicos que representan algo más que un archivo. El directorio /proc almacena ficheros que representan información sobre todos los procesos en ejecución en el sistema. Puedes utilizar herramientas como ls y cat para leer el estado de los diferentes procesos que se ejecutan en tu sistema. Este directorio también contiene a menudo archivos en /proc/sys que interactúan con el kernel y te permiten ajustar parámetros particulares del kernel y ajustes.

Mientras que algunos ficheros de estado del núcleo han aparecido en /proc (en particular /proc/sys), se supone que se almacenan en /sys. El directorio /sys está diseñado para contener todos estos archivos que le permiten interactuar con el kernel, y este directorio se rellena dinámicamente con archivos que a menudo aparecen como series anidadas de enlaces simbólicos recursivos – ¡ten cuidado cuando ejecutes comandos como find aquí!

/srv

Comparado con algunos de los directorios, /srv es un poco nuevo. Este directorio está diseñado para almacenar archivos que un servidor puede compartir externamente. Por ejemplo, se considera el lugar adecuado para almacenar archivos del servidor web (/srv/www es popular).

/mnt y /media

Cuando agregas sistemas de archivos adicionales al equipo, ya sea desde una unidad USB, un montaje NFS u otras fuentes, necesitas un lugar estándar para montarlos. Aquí es donde entra /mnt y /media. El directorio /mnt solía ser un sitio para todo, para cualquier disco montado que no tuviera ningún otro lugar adonde ir, pero ahora, deberías usar este directorio para varios puntos de montaje NFS y otros discos que están destinados a ser montados todo el tiempo. El directorio /media está diseñado para aquellos discos que están montados temporalmente, como CD-ROMs y discos USB.

/tmp, /var/tmp y /dev/shm

Incluso GNU/Linux necesita un trastero, y proporciona una serie de directorios que están diseñados para almacenar archivos temporales, en función del tiempo que desees mantenerlos. Estos directorios son ideales para programas que necesitan almacenar algunos datos en un archivo temporalmente, pero que pueden no necesitar que los datos se queden para siempre, como los datos en caché que un proceso puede volver a crear. Lo que hace que estos directorios sean ideales para este propósito es que se crean con permisos para que cualquier usuario pueda escribir en ellos.

El directorio /tmp está destinado a almacenar archivos temporales que no necesitan quedarse después de un reinicio. Cuando un sistema GNU/Linux arranca, uno de los procesos de arranque iniciales limpia todos los archivos del directorio /tmp. El directorio /var/tmp, por otro lado, no se limpia entre reinicios, por lo que este es un buen lugar para almacenar archivos, como cachés que te gustaría mantener, incluso si no los necesitas absolutamente. Finalmente, el directorio /dev/shm es un pequeño ramdisk, y cualquier archivo que se almacena allí reside sólo en la RAM, y después de que el sistema se apaga, estos archivos se borran. A los hackers les encanta almacenar archivos en /dev/shm por esta razón. El directorio /dev/shm es el mejor de los tres si tiene archivos temporales que almacenan información sensible como contraseñas o secretos, ya que nunca tocarán el disco -sólo asegúrase de dar a los archivos los permisos apropiados (como 0600) antes de poner tus secretos allí para que nadie más pueda leerlos.

Espero que este recorrido por la FHS de GNU/Linux te haya ayudado a dar sentido a todos los directorios de tu disco y haya sido ameno. Para nada tiene dificultad entender la jerarquía. Sólo recuerda que tu espacio es /home y fuera de él, algunos sitios son críticos y si no sabes lo que haces con certeza, no toques nada.

 

Fuente: maslinux

¿Quién está en línea?

Hay 8389 invitados y ningún miembro en línea