Qué son las carpetas .d en Linux

Introducción

Si ha trabajado con sistemas Linux, es posible que haya notado directorios con nombres como /etc/logrotate.d/ o /etc/cron.d/. Estas .d carpetas siguen una convención utilizada por muchos servicios, desde MariaDB hasta SSH, y desde el kernel hasta PAM. Una vez que comprenda su propósito, empezará a verlas en todas partes, como mariadb.conf.d, sshd_config.d, modprobe.d, y pam.d.

Pero ¿por qué un sistema necesita directorios como /etc/logrotate.d/ para colocar archivos de configuración cuando ya existe un único archivo de configuración (p. ej., /etc/logrotate.conf) ya existe? Este artículo explica el propósito de .d carpetas y por qué son esenciales para la administración de sistemas Linux.


¿Qué son las carpetas .d ?

Propósito de las carpetas .d

La convención de carpetas .d existe para simplificar la administración de archivos de configuración de los servicios que requieren configuraciones complejas o modulares. En lugar de mantener un único archivo de configuración monolítico, .d las carpetas permiten dividir las configuraciones en partes más pequeñas y manejables.

He aquí por qué las carpetas .d son útiles:

  • Configuración modular: Los servicios pueden cargar varios archivos de configuración desde un .d directorio, lo que permite a los usuarios y paquetes agregar o modificar ajustes sin alterar el archivo de configuración principal.
  • Gestión de paquetes: Cuando se instalan o actualizan paquetes, estos pueden agregar sus propios archivos de configuración al .d directorio sin sobrescribir la configuración existente.
  • Flexibilidad: Los administradores pueden usar herramientas como Ansible o scripts para automatizar la adición o eliminación de archivos de configuración específicos.

Ejemplo: /etc/logrotate.d/

¿Por qué usar /etc/logrotate.d/?

El archivo de configuración principal de logrotate, logrotate.conf, define las reglas generales para administrar archivos de registro. Sin embargo, cuando instala un servicio nuevo (p. ej., Apache o MySQL), es posible que necesite reglas adicionales de rotación de registros. En lugar de modificar el archivo principal logrotate.conf el nuevo servicio agrega su propio archivo de configuración a /etc/logrotate.d/.

Por ejemplo:

  • /etc/logrotate.d/apache2 podría contener reglas de rotación de registros específicas para los registros de Apache.
  • /etc/logrotate.d/mysql podría definir reglas de rotación para los registros de MySQL.

Este enfoque modular garantiza:

  • Separación de responsabilidades: Cada servicio tiene su propio archivo de configuración.
  • Facilidad de mantenimiento: Los archivos de configuración se pueden agregar o quitar sin afectar a otros servicios.

Cómo funcionan las carpetas .d

Inclusión de archivos

Cuando un servicio se inicia o recarga su configuración, incluye automáticamente todos los archivos de su .d directorio. Estos archivos suelen terminar en .conf.

Por ejemplo:

  • Logrotate lee todos los archivos de /etc/logrotate.d/ cuando se ejecuta.
  • Systemd carga anulaciones de configuración desde .d directorios como /etc/systemd/system/ o /etc/systemd/system.conf.d/.

Si se elimina un archivo dentro del .d directorio, el servicio excluirá su configuración, lo que garantiza que el sistema siga funcionando sin errores.

Automatización y seguridad

El uso de las carpetas .d simplifica las tareas de automatización. Por ejemplo:

  • Herramientas de automatización: Herramientas como Ansible pueden gestionar .d directorios para agregar o quitar archivos de configuración específicos.
  • Configuración delegada: Los equipos de seguridad pueden restringir el acceso a determinados archivos de configuración colocándolos en .d directorios, lo que permite actualizaciones parciales sin exponer todo el archivo de configuración.

Variantes de las carpetas .d

Configuración de Apache HTTPD

En Debian/Ubuntu, Apache usa directorios como conf-available y mods-available para administrar configuraciones. Los administradores pueden habilitar o deshabilitar módulos o configuraciones específicos con comandos como a2enmod o a2dismod.

Configuración de Systemd

Systemd usa .d directorios para definir anulaciones de archivos de unidad. Por ejemplo:

  • /etc/systemd/system.conf.d/ contiene anulaciones de configuración de todo el sistema.
  • /etc/systemd/system/<service>.d/ permite a los administradores definir anulaciones específicas de un servicio.

Estos directorios simplifican la precedencia de las configuraciones, lo que garantiza que los ajustes activos sean claros y modulares.


Ventajas de las carpetas .d

1. Simplifica la administración de configuraciones

En lugar de mantener archivos de configuración grandes y complejos, .d las carpetas permiten dividir las configuraciones en archivos más pequeños y modulares.

2. Aumenta la flexibilidad

Los archivos de configuración se pueden agregar o quitar dinámicamente sin interrumpir el servicio ni requerir grandes modificaciones en un archivo principal.

3. Favorece la automatización

Herramientas como Ansible, Puppet, o Chef pueden gestionar fácilmente .d directorios para implementar o actualizar configuraciones en varios sistemas.

4. Mejora la seguridad

Al delegar archivos de configuración a .d directorios, los administradores pueden controlar el acceso a archivos específicos sin exponer toda la configuración.


Conclusión

La convención de carpetas .d es una herramienta poderosa para administrar configuraciones de forma modular, flexible y automatizada en Linux. Ya sea que trabaje con reglas de rotación de registros, módulos de Apache o anulaciones de Systemd, comprender .d directorios puede simplificar enormemente las tareas de administración de sistemas.

Deja un comentario