Ordner überwachen und Rechte ändern

Hank Moody

Ficken & Schläge
Registriert
3 Aug. 2013
Beiträge
959
Guten Morgen,

ich stehe vermutlich gerade extrem auf dem Schlauch. Folgendes Szenario: ich möchte einen Ordner überwachen (sagen wir /var/www) und für alle dort angelegten, geänderten, ... Files und Unterordner die Rechte ändern.

Aktuell läuft ein kleines Skript, das inotifywait verwendet:
[src=bash]#!/bin/sh

inotifywait -mrq -e CREATE --format %w%f "/var/www/" | while read FILE
do
chown www-data:www-data "$FILE"
chmod 755 "$FILE"
done[/src]
Das starte ich via init-Skript, das so aussieht:
[src=bash]#! /bin/sh

### BEGIN INIT INFO
# Provides: inotifywait.sh
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start:
# Should-Stop:
# Short-Description: start inotifywait-daemon
### END INIT INFO

case "$1" in
start|"")

rm -f /var/log/inotifywait.log
/usr/local/sbin/inotifywait.sh >/var/log/inotifywait.log 2>&1 &

;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# killall inotifywait ???
;;
*)
echo "Usage: inotifywait.sh [start|stop]" >&2
exit 3
;;
esac

:[/src]

Ich weiß, dass die Lösung nicht wirklich schön, aber bisher funktionstüchtig ist. Heute habe ich in besagtem Unterordner (sagen wir "/var/www/rss") ein git-Projekt via git clone geklont. So weit so gut, das Skript ändert die Rechte aller Ordner und Dateien, die direkt in /var/www/rss liegen, aber nicht die Rechte der Dateien, die in Ordnern darunter liegen (z.B. /var/www/rss/plugins), die haben weiterhin die Rechte des Users, der das Projekt geklont hat.

Lege ich per 'touch test' eine Datei in /var/www/rss/plugins an, werden die Rechte geändert - also scheint es irgendwas mit dem git-Checkout zu tun zu haben?

Ich weiß nicht mehr weiter, es nervt aber ziemlich... habt ihr eine Idee oder einen sinnvolleren Weg?

Danke!
 
Wäre ein chown -R, alle 5min via Cron aufgerufen, vielleicht einfacher? Wie viele Dateien sind es denn?

Wenn es ein journaled FS ist, sollte das auch nicht viel ressourcenintensiver sein als inotify...

Abgesehen davon :
since one inotify watch will be established per subdirectory, it is possible that the maximum amount of inotify watches per user will be reached. The default maximum is 8192; it can be increased by writing to /proc/sys/fs/inotify/max_user_watches.
 
Reicht dir ein einfaches chown a+S /var/www nicht? Dann werden normalerweise alle neu angelegten Dateien mit Owner/Group des übergeordneten Ordners angelegt. Und was Rechte angeht, kannst du normalerweise mit umask arbeiten. Also kein Grund für ein Script...
 
Zurück
Oben