
Gibt es eine Möglichkeit (mit ACLs), den Inhalt eines Ordners zu schützen? Benutzer sollten Dateien in einem Ordner erstellen, diese aber nicht überschreiben/bearbeiten/löschen können. Ist das möglich?
Antwort1
Man kann inotifywait
das Verzeichnis überwachen und Änderungen vornehmen, z. B. den Eigentümer jeder neuen Datei ändern, die in das Verzeichnis kopiert wird. In einer Debian-basierten Distribution installieren Sie die Software wie folgt: apt-get install inotify-tools
.
Erstellen Sie beispielsweise ein Skript /usr/local/sbin/inbox.sh
wie folgt.
#!/usr/bin/env bash
inotifywait -m -e create "/path/to/directory" |
while read path event file; do
if [ "$event" = "CREATE" ]; then
chown root:root "$path$file"
fi
done
Geben Sie dem Skript die Berechtigung zur Ausführung ( chmod 0700 /usr/local/sbin/inbox.sh
). Führen Sie es dann beim Systemstart aus, beispielsweise von /etc/rc.local
oder von der entsprechenden RC-Datei: /usr/local/sbin/inbox.sh &
.
Entsprechend derHandbuch, -m
überwacht auf unbestimmte Zeit und -e
hält nach einem bestimmten Ereignis Ausschau. Innerhalb der while
Schleife könnte ein Ereignis wie empfangen werden CREATE,ISDIR
, das natürlich die Erstellung eines Verzeichnisses anzeigt. Verzeichnisse sind nicht das Ziel der Frage; daher if
enthält die Anweisung einen Befehl, nur auf neue Dateien zu reagieren, die durch das Ereignis dargestellt werden CREATE
. Die path
Variable von inotifywait
hat einen abschließenden Schrägstrich, daher können $path
und $file
aneinandergereiht werden, ohne dass zwischen den beiden ein Schrägstrich angegeben werden muss.