🛡️ Cómo usar inotifywait con systemd para vigilar directorios en Linux




inotifywait

En este post te explico paso a paso cómo vigilar en tiempo real la creación de carpetas en uno o varios directorios usando inotifywait, y cómo automatizarlo con un servicio systemd para que funcione incluso después de reiniciar el servidor.

Este método es ideal para administradores que necesitan aplicar permisos automáticamente, mover archivos o registrar eventos cuando se crean carpetas en rutas sensibles, como /var/www.


🧰 Requisitos

  • Distribución Linux (Debian, Ubuntu, etc.)
  • Acceso como root o privilegios con sudo
  • inotify-tools instalado

Instálalo con:

sudo apt update
sudo apt install inotify-tools -y

🎯 Objetivo del script

Queremos que, cada vez que se cree una carpeta dentro de un directorio específico (por ejemplo /var/www/...), se aplique automáticamente un chown para asignar los permisos correctos.


📜 Script de vigilancia: vigilar_revista.sh

Ubica el script en /usr/local/bin/vigilar_revista.sh. Dale permisos de ejecución:

sudo chmod +x /usr/local/bin/vigilar_directorio.sh

Ejemplo de script:

#!/bin/bash

# Directorios a vigilar
DIRECTORIOS=(
  "/var/www/iespai/public_html/directorio"
  "/var/www/iespai2/public_html/directorio"
)

# Usuario y grupo destino
OWNER="directorio:directorio"

# Función que vigila un directorio
vigilar_directorio() {
  local DIR="$1"
  echo "Vigilando: $DIR"
  inotifywait -m -e create --format '%f' "$DIR" | while read -r NOMBRE
  do
    RUTA="$DIR/$NOMBRE"
    if [ -d "$RUTA" ]; then
      echo "Se ha creado una carpeta: $RUTA"
      chown -R $OWNER "$RUTA"
    fi
  done
}

# Ejecutar vigilancia para todos los directorios
for DIR in "${DIRECTORIOS[@]}"; do
  vigilar_directorio "$DIR" &
done

wait

Este script vigila múltiples rutas y, cada vez que se crea una carpeta, le aplica los permisos correspondientes.


⚙️ Crear el servicio systemd

Creamos el archivo:

sudo nano /etc/systemd/system/vigilar_directorio.service

Contenido:

[Unit]
Description=Vigilancia automática de carpetas para revistas
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/vigilar_directorio.sh
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=vigilar_revista

[Install]
WantedBy=multi-user.target

🚀 Activar y lanzar el servicio

sudo systemctl daemon-reload
sudo systemctl enable vigilar_directorio.service
sudo systemctl start vigilar_directorio.service

Verifica que esté activo:

sudo systemctl status vigilar_directorio.service

📒 Ver logs en tiempo real

sudo journalctl -u vigilar_directorio.service -f

🧼 Detener o reiniciar el servicio

sudo systemctl stop vigilar_directorio.service
sudo systemctl restart vigilar_directorio.service

✅ Beneficios

  • 🛡️ Automatización total de permisos en carpetas nuevas
  • 🖥️ Monitorización en tiempo real
  • 🔄 Persistente tras reinicios
  • 🧩 Ampliable a múltiples directorios

🧠 Conclusión

inotifywait es una herramienta ligera pero poderosa para tareas de vigilancia en Linux. Combinado con systemd, nos permite construir soluciones automáticas, limpias y robustas para administrar archivos y permisos en entornos como servidores web o compartidos.

¿Te ha sido útil? ¡Compártelo con otros administradores y deja tu comentario!