GNU/Linux >> Tutoriales Linux >  >> Debian

Activación de comandos en cambios de archivo/directorio con Incron en Debian Etch

Esta guía muestra cómo puede instalar y usar incron en un sistema Debian Etch. Incron es similar a cron, pero en lugar de ejecutar comandos basados ​​en el tiempo, puede activar comandos cuando ocurren eventos de archivos o directorios (por ejemplo, una modificación de archivos, cambios de permisos, etc.).

¡Este documento viene sin garantía de ningún tipo! ¡No emito ninguna garantía de que esto funcione para usted!

1 Instalando Incron

Incron está disponible en el repositorio etch-backports, por lo que debemos agregar la siguiente línea a /etc/apt/sources.list:

vi /etc/apt/sources.list

Importemos la clave del archivo backports.org en apt...

wget -O - http://backports.org/debian/archive.key | añadir clave apt -

... y corre

apt-obtener actualización

El repositorio etch-backports está inactivo por defecto, por lo que para instalar incron desde él, debemos usar el siguiente comando:

apt-get -t etch-backports install incron

2 Usando Incron

El uso de incron es muy parecido al uso de cron. Tiene el comando incrontab que le permite enumerar (-l), editar (-e) y eliminar (-r) las entradas de incrontab. Para obtener más información al respecto, consulte

hombre incrontab

Allí también encontrará la siguiente sección:

Si /etc/incron.allow existe, solo los usuarios enumerados aquí pueden usar incron. De lo contrario, si /etc/incron.deny existe, solo los usuarios que NO aparecen aquí pueden usar incron. Si ninguno de estos archivos existe, todos pueden usar incron. (Nota importante:este comportamiento es inseguro y probablemente se cambiará para que sea compatible con el estilo utilizado por ISC Cron). La ubicación de estos archivos se puede cambiar en la configuración.

Esto significa que si queremos usar incrontab como raíz, debemos eliminar /etc/incron.allow (que no es seguro porque todos los usuarios del sistema pueden usar incrontab)...

rm -f /etc/incron.allow

... o agregue root a ese archivo (recomendado):

vi /etc/incron.allow
[...]deb http://www.backports.org/debian etch-backports main contrib non-free[...]

Antes de hacer esto, recibirá mensajes de error como este cuando intente usar incrontab:

servidor1:~# incrontab -l
el usuario 'raíz' no puede usar incron
servidor1:~#

Después funciona:

servidor1:~# incrontab -l
no hay tabla para root
servidor1:~#

Podemos usar

incrontab -e

para crear trabajos incron. Antes de hacer esto, echamos un vistazo a

hombre 5 incrontab

porque explica el formato de los crontabs. Básicamente, el formato es el siguiente...

  

...donde puede ser un directorio (es decir, el directorio y/o los archivos directamente en ese directorio (¡no los archivos en subdirectorios de ese directorio!) que se observan) o un archivo.

puede ser una de las siguientes:

IN_ACCESS           Se accedió al archivo (leer) (*)
IN_ATTRIB           Metadatos cambiados (permisos, marcas de tiempo, atributos extendidos, etc.) (*)
IN_CLOSE_WRITE      El archivo abierto para escribir se cerró (*)
IN_CLOSE_NOWRITE    El archivo no abierto para escribir se cerró (*)
IN_CREATE           Archivo/directorio creado en el directorio observado (*)
IN_DELETE           Archivo/directorio eliminado del directorio observado (*)
IN  DELETE archivo observado /directorio se eliminó
IN_MODIFY           El archivo se modificó (*)
IN_MOVE_SELF        El archivo/directorio observado se movió
IN_MOVED_FROM       El archivo se movió fuera del directorio observado (*)IN_OPEN             El archivo se abrió (*)

Al monitorear un directorio, los eventos marcados con un asterisco (*) arriba pueden ocurrir para archivos en el directorio, en cuyo caso el campo de nombre en los
datos de eventos devueltos identifica el nombre del archivo dentro del directorio.

El símbolo IN_ALL_EVENTS se define como una máscara de bits de todos los eventos anteriores. Dos símbolos de conveniencia adicionales son IN_MOVE, que es una combinación de IN_MOVED_FROM e IN_MOVED_TO, e IN_CLOSE, que combina IN_CLOSE_WRITE e IN_CLOSE_NOWRITE.

Los siguientes símbolos adicionales se pueden especificar en la máscara:

IN_DONT_FOLLOW      No desreferenciar pathname si es un enlace simbólico
IN_ONESHOT          Monitor pathname solo para un evento
IN_ONLYDIR          Solo ver pathname si es un directorio

Además, hay un símbolo que no aparece en el conjunto de símbolos de inotify. Es IN_NO_LOOP. Este símbolo deshabilita los eventos de monitoreo hasta que el actual se maneje por completo (hasta que salga su proceso secundario).

es el comando que debe ejecutarse cuando ocurre el evento. Los siguientes comodines pueden usarse dentro de la especificación del comando:

&indicadores de eventos (numéricamente)

Si observa un directorio, [email protected] contiene la ruta del directorio y $# el archivo que desencadenó el evento. Si ve un archivo, [email protected] contiene la ruta completa al archivo y $# está vacío.

Si necesita los comodines pero no está seguro de a qué se traducen, puede crear un trabajo incron como este:

raíz

Luego, crea o modifica un archivo en el directorio /tmp y observa /var/log/syslog:este registro muestra cuándo se activó un trabajo incron, si tuvo éxito o si hubo errores, y cuál fue el comando real. se ejecutó (es decir, los comodines se reemplazan con sus valores reales).

cola /var/log/syslog
...
21 de agosto 17:26:50 servidor1 incrond[7111]:(raíz) CMD (echo "$ /tmp huhu IN_CREATE 256")

En este ejemplo he creado el archivo /tmp/huhu; como ves, [email protected] se traduce a /tmp, $# a huhu, $% a IN_CREATE y $&a 256.

Ahora basta de teoría. Creemos nuestros primeros trabajos incron. Me gustaría monitorear el archivo /etc/apache2/apache2.conf y el directorio /etc/apache2/vhosts/, y siempre que haya cambios, quiero que Incron reinicie Apache. Así es como lo hacemos:

incrontab -e
/tmp/ IN_MODIFY echo "$$ [email protected] $# $% $&"

Eso es todo. Para fines de prueba, puede modificar su configuración de Apache y echar un vistazo a /var/log/syslog, y debería ver que incron reinicia Apache.

Para enumerar todos los trabajos incron definidos, puede ejecutar

incrontab -l
servidor1:~# incrontab -l
/etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart
/etc/apache2/vhosts/ IN_MODIFY /etc/init.d /apache2 reiniciar
servidor1:~#

Para eliminar todos los trabajos incron del usuario actual, ejecute

incrontab -r
servidor1:~# incrontab -r
eliminando la tabla para el usuario 'raíz'
la tabla para el usuario 'raíz' se eliminó con éxito
servidor1:~#

3 Enlaces

  • incron:http://inotify.aiken.cz/?section=incron&page=about&lang=en

Debian
  1. Cómo cifrar el directorio con EncFS en Debian 9 Stretch Linux

  2. Cómo configurar un sitio web para compartir archivos con Jirafeau en Debian 10

  3. Cómo ejecutar comandos en cambios de archivos o directorios con Incron en Ubuntu

  4. Debian 4.0 (Etch) Servidor independiente Samba con tdbsam Backend

  5. Cómo escanear un servidor Debian en busca de rootkits con Rkhunter

Monitoreo de múltiples sistemas con munin (Debian Etch)

Instalación de Lighttpd con compatibilidad con PHP5 y MySQL en Debian Etch

Introducción a los comandos ad hoc de Ansible

Cómo leer un archivo con espacios en Linux

Dos comandos para encontrar archivos y directorios en Debian 11 fácilmente

Los 30 mejores comandos de Linux

    /etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart/etc/apache2/vhosts/ IN_MODIFY /etc/init. reiniciar d/apache2