GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Auslösen von Befehlen bei Datei-/Verzeichnisänderungen mit Incron auf Debian Etch

Diese Anleitung zeigt, wie Sie Incron auf einem Debian Etch-System installieren und verwenden können. Incron ist Cron ähnlich, aber anstatt Befehle basierend auf Zeit auszuführen, kann es Befehle auslösen, wenn Datei- oder Verzeichnisereignisse eintreten (z. B. eine Dateiänderung, Änderungen von Berechtigungen usw.).

Dieses Dokument wird ohne jegliche Gewährleistung geliefert! Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Incron installieren

Incron ist im Etc-Backports-Repository verfügbar, daher müssen wir die folgende Zeile zu /etc/apt/sources.list hinzufügen:

vi /etc/apt/sources.list
[...]
deb http://www.backports.org/debian etch-backports main contrib non-free
[...]

Lassen Sie uns den backports.org-Archivschlüssel in apt importieren...

wget -O - http://backports.org/debian/archive.key | apt-key add -

... und ausführen

apt-get update

Das Etch-Backports-Repository ist standardmäßig inaktiv, um also Incron daraus zu installieren, müssen wir den folgenden Befehl verwenden:

apt-get -t etch-backports install incron

2 Verwendung von Incron

Die Verwendung von Incron ist der Verwendung von Cron sehr ähnlich. Sie haben den Befehl incrontab, mit dem Sie incrontab-Einträge auflisten (-l), bearbeiten (-e) und entfernen (-r) können. Um mehr darüber zu erfahren, siehe

man incrontab

Dort finden Sie auch den folgenden Abschnitt:

Falls /etc/incron.allow existiert, dürfen nur hier aufgeführte Benutzer incron verwenden. Andernfalls, wenn /etc/incron.deny existiert, können nur Benutzer, die hier NICHT aufgeführt sind, incron verwenden. Wenn keine dieser Dateien existiert, darf jeder Incron verwenden. (Wichtiger Hinweis:Dieses Verhalten ist unsicher und wird wahrscheinlich geändert, damit es mit dem von ISC Cron verwendeten Stil kompatibel ist.) Der Speicherort dieser Dateien kann in der Konfiguration geändert werden.

Das heißt, wenn wir incrontab als root verwenden wollen, müssen wir entweder /etc/incron.allow löschen (was unsicher ist, weil dann jeder Systembenutzer incrontab verwenden kann)...

rm -f /etc/incron.allow

... oder root zu dieser Datei hinzufügen (empfohlen):

vi /etc/incron.allow
root

Bevor Sie dies tun, erhalten Sie Fehlermeldungen wie diese, wenn Sie versuchen, incrontab zu verwenden:

server1:~# incrontab -l
user 'root' is not allowed to use incron
server1:~#
nicht verwenden

Danach funktioniert es:

server1:~# incrontab -l
no table for root
server1:~#

Wir können

verwenden
incrontab -e

Inkron-Jobs zu erstellen. Bevor wir dies tun, werfen wir einen Blick auf

man 5 incrontab

weil es das Format der Crontabs erklärt. Grundsätzlich ist das Format wie folgt...

<path> <mask> <command>

...wobei ein Verzeichnis sein kann (dh das Verzeichnis und/oder die Dateien direkt in diesem Verzeichnis (nicht Dateien in Unterverzeichnissen dieses Verzeichnisses!) werden überwacht) oder eine Datei.

kann eine der folgenden sein:

IN_ACCESS           File was accessed (read) (*)
IN_ATTRIB           Metadata changed (permissions, timestamps, extended attributes, etc.) (*)
IN_CLOSE_WRITE      File opened for writing was closed (*)
IN_CLOSE_NOWRITE    File not opened for writing was closed (*)
IN_CREATE           File/directory created in watched directory (*)
IN_DELETE           File/directory deleted from watched directory (*)
IN_DELETE_SELF           Watched file/directory was itself deleted
IN_MODIFY           File was modified (*)
IN_MOVE_SELF        Watched file/directory was itself moved
IN_MOVED_FROM       File moved out of watched directory (*)
IN_MOVED_TO         File moved into watched directory (*)
IN_OPEN             File was opened (*)

Bei der Überwachung eines Verzeichnisses können die oben mit einem Sternchen (*) gekennzeichneten Ereignisse für Dateien im Verzeichnis auftreten. In diesem Fall identifiziert das Namensfeld in den
zurückgegebenen Ereignisdaten den Namen der Datei innerhalb des Verzeichnisses.

Das IN_ALL_EVENTS-Symbol ist als eine Bitmaske aller obigen Ereignisse definiert. Zwei zusätzliche praktische Symbole sind IN_MOVE, das eine Kombination aus IN_MOVED_FROM und IN_MOVED_TO ist, und IN_CLOSE, das IN_CLOSE_WRITE und IN_CLOSE_NOWRITE kombiniert.

Folgende weitere Symbole können in der Maske angegeben werden:

IN_DONT_FOLLOW      Don't dereference pathname if it is a symbolic link
IN_ONESHOT          Monitor pathname for only one event
IN_ONLYDIR          Only watch pathname if it is a directory

Zusätzlich gibt es ein Symbol, das nicht im Inotify-Symbolsatz erscheint. Es ist IN_NO_LOOP. Dieses Symbol deaktiviert die Überwachung von Ereignissen, bis das aktuelle Ereignis vollständig verarbeitet ist (bis sein untergeordneter Prozess beendet wird).

ist der Befehl, der ausgeführt werden soll, wenn das Ereignis eintritt. Die folgenden Wildards können innerhalb der Befehlsspezifikation verwendet werden:

$$   dollar sign
[email protected]   watched filesystem path (see above)
$#   event-related file name
$%   event flags (textually)
$&   event flags (numerically)

Wenn Sie ein Verzeichnis beobachten, enthält [email protected] den Verzeichnispfad und $# die Datei, die das Ereignis ausgelöst hat. Wenn Sie sich eine Datei ansehen, enthält [email protected] den vollständigen Pfad zur Datei und $# ist leer.

Wenn Sie die Platzhalter benötigen, sich aber nicht sicher sind, was sie bedeuten, können Sie einen Incron-Job wie diesen erstellen:

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

Dann erstellen oder ändern Sie eine Datei im /tmp-Verzeichnis und werfen einen Blick auf /var/log/syslog - dieses Protokoll zeigt, wann ein Incron-Job ausgelöst wurde, ob er erfolgreich war oder ob es Fehler gab und was der eigentliche Befehl war es ausgeführt (d. h. die Wildcards werden durch ihre echten Werte ersetzt).

tail /var/log/syslog
...
Aug 21 17:26:50 server1 incrond[7111]: (root) CMD (echo "$ /tmp huhu IN_CREATE 256")

In diesem Beispiel habe ich die Datei /tmp/huhu erstellt; Wie Sie sehen, wird [email protected] zu /tmp, $# zu huhu, $% zu IN_CREATE und $&zu 256.

Nun genug Theorie. Lassen Sie uns unsere ersten Incron-Jobs erstellen. Ich möchte die Datei /etc/apache2/apache2.conf und das Verzeichnis /etc/apache2/vhosts/ überwachen und bei Änderungen möchte ich, dass incron Apache neu startet. So machen wir es:

incrontab -e
/etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart
/etc/apache2/vhosts/ IN_MODIFY /etc/init.d/apache2 restart

Das ist es. Zu Testzwecken können Sie Ihre Apache-Konfiguration ändern und einen Blick auf /var/log/syslog werfen, und Sie sollten sehen, dass Incron Apache neu startet.

Um alle definierten Incron-Jobs aufzulisten, können Sie

ausführen
incrontab -l
server1:~# incrontab -l
/etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart
/etc/apache2/vhosts/ IN_MODIFY /etc/init.d/apache2 restart
server1:~#

Um alle Incron-Jobs des aktuellen Benutzers zu löschen, führen Sie

aus
incrontab -r
server1:~# incrontab -r
removing table for user 'root'
table for user 'root' successfully removed
server1:~#

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

Debian
  1. So verschlüsseln Sie das Verzeichnis mit EncFS unter Debian 9 Stretch Linux

  2. So richten Sie eine File-Sharing-Website mit Jirafeau unter Debian 10 ein

  3. So führen Sie Befehle für Datei- oder Verzeichnisänderungen mit Incron unter Ubuntu aus

  4. So scannen Sie mit Rkhunter einen Debian-Server nach Rootkits

  5. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

Überwachung mehrerer Systeme mit munin (Debian Etch)

Installieren von Lighttpd mit PHP5- und MySQL-Unterstützung auf Debian Etch

Erste Schritte mit Ansible Ad-hoc-Befehlen

So lesen Sie eine Datei mit Leerzeichen in Linux

Zwei Befehle zum einfachen Auffinden von Dateien und Verzeichnissen in Debian 11

Top 30 Linux-Befehle