

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Diseño del sistema de archivos
<a name="filesystem"></a>

 En esta sección se describe el diseño del sistema de archivos de un sistema de AL2023, incluidos los detalles que pueden ser específicos de las instancias o los contenedores basados en AL2023. Para obtener más información, consulte la página man de `file-hierarchy(7)`. 

**Topics**
+ [`/` (el directorio raíz)](filesystem-root.md)
+ [`/boot` (Kernel, initramfs, etc.)](filesystem-slash-boot.md)
+ [`/etc` (Configuración del sistema)](filesystem-slash-etc.md)
+ [`/home` (Directorios de inicio del usuario)](filesystem-slash-home.md)
+ [`/root` (directorio de inicio del usuario root)](filesystem-slash-root.md)
+ [`/srv` (carga útil del servidor)](filesystem-slash-srv.md)
+ [`/tmp` (archivos temporales pequeños)](filesystem-slash-tmp.md)
+ [`/run` (datos de tiempo de ejecución)](filesystem-slash-run.md)
+ [`/usr` (recursos del sistema)](filesystem-slash-usr.md)
+ [`/var` (datos de sistema variables persistentes)](filesystem-slash-var.md)

# `/` (el directorio raíz)
<a name="filesystem-root"></a>

 De forma predeterminada, las imágenes de AL2023 están configuradas con un elemento `/` grabable, lo que permite a los usuarios privilegiados crear nuevos archivos y directorios. 

 Es posible configurar los servicios de `systemd` para que utilicen una ruta o imagen diferente para que aparezca como `/` para ese servicio, así como establecer restricciones de acceso en cualquier ruta. 

**nota**  
 Se recomienda configurar los servicios de `systemd` para restringir a qué tiene acceso el servicio. Esto puede incluir el uso de la directiva `ReadOnlyPaths=/` que hace que `/` sea de solo lectura.   
 Para obtener más información sobre cómo usar `systemd` para restringir el acceso de un servicio al sistema, consulte la página man de `systemd.exec(5)`. 

# `/boot` (Kernel, initramfs, etc.)
<a name="filesystem-slash-boot"></a>

 De forma predeterminada, las imágenes de arranque de AL2023 están configuradas con `/boot` en el sistema de archivos root. La ruta `/boot` solo es relevante para las imágenes de arranque, por lo que no se utiliza en las imágenes del contenedor de AL2023. 

 Este directorio alberga los archivos necesarios para el arranque de AL2023, como el núcleo de Linux y initramfs. El contenido de este directorio solo debe manipularse con las herramientas que se proporcionan con el sistema operativo. 

## `/boot/efi` (Partición del sistema EFI)
<a name="filesystem-slash-boot-efi"></a>

 De forma predeterminada, las imágenes de arranque de AL2023 están configuradas con la partición EFI System montada en `/boot/efi`. Este sistema de archivos está gestionado por el sistema operativo y contiene el código y la configuración fundamentales para el arranque del sistema. 

 Esta ruta no es relevante para las imágenes del contenedor. 

# `/etc` (Configuración del sistema)
<a name="filesystem-slash-etc"></a>

 El directorio `/etc` en AL2023 contiene la configuración específica del sistema. De forma predeterminada, las imágenes de AL2023 vienen con `/etc` en el sistema de archivos root y los usuarios con privilegios pueden escribir en ellas. 

**nota**  
 Es común que las aplicaciones (como `systemd`) mantengan la configuración predeterminada de [`/usr` (recursos del sistema)](filesystem-slash-usr.md) que se puede anular introduciendo la configuración en [`/etc` (Configuración del sistema)](#filesystem-slash-etc).   
 En el caso de estas aplicaciones, al cambiar los archivos de [`/usr` (recursos del sistema)](filesystem-slash-usr.md) en lugar de anular la configuración predeterminada de `/etc`, es probable que los cambios se anulen cuando se actualice el paquete. 

# `/home` (Directorios de inicio del usuario)
<a name="filesystem-slash-home"></a>

 Los usuarios normales tienen sus directorios principales en `/home`, pero el software siempre debe buscar la variable de entorno `$HOME` por usuario en lugar de basarse en un patrón como `/home/$USER`. 

 De forma predeterminada, las imágenes de AL2023 tienen `/home` en el sistema de archivos root, pero el software no debe confiar en esto. Es perfectamente válido configurar el sistema operativo como un sistema de archivos independiente, que se monta más adelante durante el arranque o solo después de que el usuario se autentique en el sistema. `/home` 

 El directorio de inicio del usuario root no está en `/home`, sino que [`/root` (directorio de inicio del usuario root)](filesystem-slash-root.md) está disponible por si no se puede montar el sistema de archivos `/home`. 

**nota**  
 Se recomienda configurar los servicios `systemd` que no necesitan acceso de escritura a `/home` con la directiva `ProtectHome=read-only`. Con esta opción, `/home`, `/root` y `/run/user` se convierten en solo lectura para el servicio.   
 También se recomienda que los servicios que no necesitan acceso a `/home` se configuren con la directiva `ProtectHome=tmpfs`, que ejecutará el servicio en un entorno de pruebas en el que `/home`, `/root` y `/run/user` son sistemas de archivos `tmpfs` vacíos de solo lectura.   
 Para obtener más información sobre cómo usar `systemd` para restringir el acceso de un servicio al sistema, consulte la página man de `systemd.exec(5)`. 

# `/root` (directorio de inicio del usuario root)
<a name="filesystem-slash-root"></a>

 El directorio principal del usuario root es el directorio `/root`, separado a propósito de [`/home` (Directorios de inicio del usuario)](filesystem-slash-home.md) para que esté presente en caso de que [`/home` (Directorios de inicio del usuario)](filesystem-slash-home.md) se encuentre en un sistema de archivos que no esté disponible. 

 La práctica recomendada para configurar los servicios de `systemd` es la misma para `/root` que para [`/home` (Directorios de inicio del usuario)](filesystem-slash-home.md). 

# `/srv` (carga útil del servidor)
<a name="filesystem-slash-srv"></a>

 El administrador del sistema administra el directorio `/srv` y Amazon Linux 2023 no impone restricciones a la organización de este directorio. 

 Es posible configurar el directorio `/srv` para que esté en un sistema de archivos independiente, por lo que solo estará disponible más adelante durante el arranque. 

# `/tmp` (archivos temporales pequeños)
<a name="filesystem-slash-tmp"></a>

**nota**  
 Amazon Linux 2023 es diferente a Amazon Linux 2, ya que de forma predeterminada `/tmp` es ahora `tmpfs` y no una ruta en el sistema de archivos root. 

**nota**  
 Cuando se ejecuta en un contenedor, normalmente será la configuración del tiempo de ejecución del contenedor la que determine si `/tmp` es `tmpfs`, o una ruta en el disco, y si hay un proceso de limpieza en ejecución o no. 

 El directorio `/tmp` es para archivos temporales pequeños y con un tamaño limitado. De forma predeterminada, AL2023 lo configura para que sea un sistema de archivos `tmpfs` con un límite de tamaño del 50 % de la RAM y un máximo de un millón de inodes. 

 Las aplicaciones deberían preferir la ruta de la variable de entorno `$TMPDIR` antes que la ruta `/tmp`. A continuación, los usuarios pueden configurar la variable de entorno `$TMPDIR` para anular la ruta que debe utilizar una aplicación `/tmp` 

 En el caso de archivos temporales más grandes, [`/var/tmp`](filesystem-slash-var.md#filesystem-slash-var-tmp) debería usarse en su lugar. 

**aviso**  
 Como `/tmp` es compartido, es importante utilizar métodos seguros para crear archivos temporales. Para obtener más información, consulte la documentación de `systemd` sobre el [uso seguro de `/tmp` y `/var/tmp`](https://systemd.io/TEMPORARY_DIRECTORIES/). 

**nota**  
 Se recomienda que los servicios de `systemd` se configuren con la directiva `PrivateTmp=` establecida `yes` o que `disconnected` ejecute el servicio en un entorno de pruebas, donde `/tmp` y [`/var/tmp`](filesystem-slash-var.md#filesystem-slash-var-tmp) no se comparten con el host ni con otros servicios.   
 Para obtener más información, incluida la forma de configurar dos servicios para que compartan los mismos directorios temporales privados, consulte la página man de `systemd.exec(5)`. 

 El contenido de `/tmp` se suele limpiar en el momento del arranque y los archivos no utilizados se limpian periódicamente. De forma predeterminada, el proceso de limpieza se ejecuta poco después del arranque y, a continuación, todos los días. Para obtener información sobre cómo configurar la limpieza de los archivos temporales, consulte `tmpfiles.d(5)` y las páginas del manual man de `systemd-tmpfiles(8)`. 

 Las rutas [`/var/tmp`](filesystem-slash-var.md#filesystem-slash-var-tmp) y `/tmp` están estrechamente relacionadas y existen para distintos propósitos. 

# `/run` (datos de tiempo de ejecución)
<a name="filesystem-slash-run"></a>

 Los paquetes del sistema utilizan el directorio `/run` para almacenar pequeñas cantidades de datos en tiempo de ejecución (como archivos de socket). Es un sistema de archivos `tmpfs` y solo los programas privilegiados pueden escribir en él. 

 Los componentes del sistema pueden utilizar el directorio `/run/log` para almacenar los registros, ya sea antes de que se escriban en `/var/log` o antes de que el sistema de archivos `/var/log` esté disponible. 

 La ruta `/run/user/` contiene los directorios de tiempo de ejecución por usuario. De forma predeterminada, se trata de sistemas de archivos `tmpfs` individuales montados por `systemd` cuando el usuario inicia sesión y se borran cuando el usuario deja de iniciar sesión. Según la [especificación del directorio base de XDG](https://specifications.freedesktop.org/basedir-spec/latest/), no se debe hacer referencia a estas rutas directamente, sino a través de la variable de entorno `$XDG_RUNTIME_DIR`. 

# `/usr` (recursos del sistema)
<a name="filesystem-slash-usr"></a>

 La jerarquía `/usr` corresponde a los recursos del sistema operativo proporcionados por el proveedor. A excepción de la jerarquía [`/usr/local`](#filesystem-slash-usr-local), nada debería modificar nada dentro de `/usr` excepto el administrador de paquetes del sistema operativo. 

 Las aplicaciones de software deben asumir que `/usr` puede ser de solo lectura. La jerarquía `/usr` no debe usarse para datos inútiles. Con la excepción de [`/usr/local`](#filesystem-slash-usr-local), la jerarquía `/usr` no debe usarse para ningún dato que se añada o modifique fuera de la instalación o eliminación del paquete, como lo hace el administrador de paquetes del sistema operativo. El administrador de paquetes del sistema operativo puede suponer que toda la jerarquía `/usr` (excepto [`/usr/local`](#filesystem-slash-usr-local)) es el mismo punto de montaje. 

 El software que se instale fuera del administrador de paquetes del sistema operativo no debe almacenar datos en `/usr`, ya que esto podría impedir cualquier invocación futura del administrador de paquetes del sistema operativo. La jerarquía [`/usr/local`](#filesystem-slash-usr-local) es la excepción y está reservada para el software ajeno al administrador de paquetes del sistema operativo. 

## `/usr/bin` (ejecutables)
<a name="filesystem-slash-usr-bin"></a>

 Archivos ejecutables que deben aparecer en la búsqueda estándar `$PATH` y que son útiles para invocar desde un intérprete de comandos. Los daemons y ejecutables que no son útiles para invocar desde un intérprete de comandos se encuentran en `/usr/lib` o `/usr/libexec`. 

## `/usr/include` (encabezados C/C\$1\$1)
<a name="filesystem-slash-usr-include"></a>

 El directorio `/usr/include` contiene archivos de encabezado C y C\$1\$1, que normalmente se encuentran en paquetes con el sufijo `-devel`. 

## `/usr/lib` y `/usr/lib64` (bibliotecas compartidas)
<a name="filesystem-slash-usr-lib"></a>

 En Amazon Linux 2023, la ruta `/usr/lib64` se usa para bibliotecas compartidas de 64 bits y datos de paquetes que dependen de la arquitectura. Dado que AL2023 no incluye ningún soporte de espacio de usuario de 32 bits, solo hay bibliotecas compartidas de 64 bits disponibles. 

 La ruta `/usr/lib` es para los datos estáticos de los paquetes del sistema operativo, que son compatibles con todas las arquitecturas. Esto puede incluir ejecutables que normalmente no se invocan desde un intérprete de comandos, que también se pueden encontrar en `/usr/libexec`. Las bibliotecas compartidas se encuentran en `/usr/lib64` en lugar de en `/usr/lib`. 

## `/usr/local` (software instalado por el administrador del sistema)
<a name="filesystem-slash-usr-local"></a>

 En Amazon Linux 2023, la ruta `/usr/local` está disponible para que el administrador del sistema instale software que no sea propiedad del sistema operativo y que no vaya a ser afectado por el sistema operativo. La jerarquía `/usr/local` predeterminada refleja la jerarquía `/`. 

## `/usr/share` (recursos compartidos)
<a name="filesystem-slash-usr-share"></a>

 Los recursos compartidos, como la documentación, los orígenes y los datos de zona horaria, se encuentran en `/usr/share`. Es habitual que varias especificaciones determinen exactamente dónde y en qué formato se almacenan los datos en este directorio. 

### `/usr/share/doc` (documentación)
<a name="filesystem-slash-usr-share-doc"></a>

 La documentación que viene con los paquetes se almacenará en `/usr/share/doc`. 

# `/var` (datos de sistema variables persistentes)
<a name="filesystem-slash-var"></a>

 

## `/var/cache` (caché)
<a name="filesystem-slash-var-cache"></a>

 A diferencia de [`/var/lib`](#filesystem-slash-var-lib), borrar datos en `/var/cache` no provocará la pérdida de datos, ya que las aplicaciones deben poder reconstruir sus datos `/var/cache` a partir de otros orígenes. 

## `/var/lib` (datos de sistema persistentes)
<a name="filesystem-slash-var-lib"></a>

 El directorio `/var/lib` se utiliza para los datos persistentes del sistema. Varios componentes del sistema colocarán aquí los datos que son privados para ese componente. A diferencia de [`/var/cache`](#filesystem-slash-var-cache), borrar datos en `/var/lib` provocará la pérdida de datos. 

 Por ejemplo, el servidor de bases de datos PostgreSQL almacenará los datos de la base de datos de forma predeterminada en `/var/lib/pgsql`. El diseño y los formatos de archivo de estos datos son privados para PostgreSQL y son datos persistentes, ya que si se borran, el usuario sufre una pérdida de datos. 

## `/var/log` (registros persistentes)
<a name="filesystem-slash-var-log"></a>

 Este directorio se usa para almacenar registros persistentes. Se recomienda que el software utilice las llamadas a la API `syslog(3)` o `sd_journal_print(3)` en lugar de almacenar directamente los archivos de registro en `/var/log`. 

**nota**  
 En AL2023 [El diario `systemd` reemplaza a `rsyslog`](journald.md), lo que supone una diferencia notable con respecto a la configuración predeterminada de Amazon Linux 2. 

 Para obtener más información sobre cómo leer los registros con `journalctl`, consulte la página del manual de [https://www.freedesktop.org/software/systemd/man/journalctl.html](https://www.freedesktop.org/software/systemd/man/journalctl.html). 

 Muchas aplicaciones utilizan sus propios mecanismos para escribir y, a veces, rotar los archivos de registro que se encuentran en `/var/log`. Consulte la documentación de estas aplicaciones para saber cómo configurar sus archivos de registro. 

## `/var/spool` (colas de correo e impresoras)
<a name="filesystem-slash-var-spool"></a>

 Este directorio se usa para datos persistentes, como colas de correo o impresoras. 

## `/var/tmp` (archivos temporales más grandes)
<a name="filesystem-slash-var-tmp"></a>

 Para archivos temporales pequeños y de tamaño limitado, posiblemente [`/tmp`](filesystem-slash-tmp.md) debería usarse en su lugar. 

 Si bien [`/tmp`](filesystem-slash-tmp.md) está configurado de forma predeterminada como un volumen `tmpfs`, por defecto `/var/tmp` está configurado como una ruta en el sistema de archivos raíz y, por lo tanto, es el lugar para archivos temporales más grandes y persistentes. De forma predeterminada, hay un trabajo de limpieza que se ejecuta de forma regular y que elimina los archivos a los que no se ha accedido recientemente. 

 Para obtener información sobre cómo configurar la limpieza de los archivos temporales, consulte `tmpfiles.d(5)` y las páginas del manual man de `systemd-tmpfiles(8)`. 

 Al igual que con [`/tmp`](filesystem-slash-tmp.md), las aplicaciones deben preferir la ruta especificada en la variable de entorno `$TMPDIR` sobre `/var/tmp`. Los usuarios pueden entonces establecer la variable de entorno `$TMPDIR` para anular la ruta que una aplicación debe utilizar para `/var/tmp`. 

**aviso**  
 Dado que `/var/tmp` es compartido (al igual que [`/tmp`](filesystem-slash-tmp.md)), es importante utilizar métodos seguros para crear archivos temporales. Para obtener más información, consulte la documentación de `systemd` sobre el [uso seguro de `/tmp` y `/var/tmp`](https://systemd.io/TEMPORARY_DIRECTORIES/). 

**nota**  
 Se recomienda que los servicios de `systemd` se configuren con la directiva `PrivateTmp=` establecida `yes` o que `disconnected` ejecute el servicio en un entorno de pruebas, donde [`/tmp`](filesystem-slash-tmp.md) y [`/var/tmp`](#filesystem-slash-var-tmp) no se comparten con el host ni con otros servicios.   
 Para obtener más información, incluida la forma de configurar dos servicios para que compartan los mismos directorios temporales privados, consulte la página man de `systemd.exec(5)`. 

 Las rutas [`/var/tmp`](#filesystem-slash-var-tmp) y [`/tmp`](filesystem-slash-tmp.md) están estrechamente relacionadas y existen para distintos propósitos. 