Dateisystem überwachen mit inotifywait

20 Sep 2021 - Lesezeit: 2 Minuten

Manchmal kommt es vor, dass man eine Datei oder einen Ordner auf seinem Server beobachten möchte, um im Fale eines Zugriffs, oder einer Aktion darauf reagieren zu können.

In meinem Fall geht es darum, dass die von mir gesetzte SGID ignoriert wird, weil ein Prozess explizit die Benutzer- und Gruppenzugehörigkeit beim schreiben einer Datei angibt.

Daher habe ich mir einen Service gebaut, welcher die Zugriffe auf einen Ordner überwacht und entsprechende Anpassungen (chmod und chown) ausführt, wenn es notwendig ist.

Dazu nutze ich inotifywait.

Zuerst erstelle ich ein Skript, das diese aufgabe für sich erledigen kann. Es kann auch händisch ausgeführt werden, damit man ordentlich testen kann.

nano /usr/bin/lookup_folder.sh

#!/bin/bash
while true; do

inotifywait -e modify,create,move -r -m --format '%w%f /PATH/TO/FOLDER |
   while read -r fname
   do
       chmod -v -R 775 "$fname"
       chown -v -R $USER:$GROUP "$fname"
   done
done

Anschließend - wenn alle Tests erfolgreich sind - wird ein systemd service erstellt, der eben dieses langlaufende Skript "startet"

nano /lib/systemd/system/lookup_folder.service

[Unit]
Description=Change file permissions

[Service]
ExecStart=/usr/bin/lookup_folder.sh

[Install]
WantedBy=multi-user.target

Anschließend muss man das alles noch enablen

systemctl daemon-reload
systemctl enable lookup-folder-service.service 
systemctl start lookup-folder-service.service 

und wenn man alles richtig gemacht hat, dann sieht man die Ausgabe der Befehle im Journal

journalctl -f -u lookup-folder-service.service 

Es wurden noch keine Kommentare verfasst, sei der erste!