Dies ist nicht möglich, da der Benutzer, der das Verzeichnis erstellt, über ausreichende Schreibrechte für das übergeordnete Verzeichnis verfügt.
Sie können stattdessen die inotifyFamilie der vom Linux-Kernel bereitgestellten Systemaufrufe nutzen, um nach der Erstellung (und optionalen mvAngabe) eines Verzeichnisses shopin dem angegebenen Verzeichnis zu mvsuchen , sofern das Verzeichnis erstellt wurde (oder optional -ed ist) rm.
Das Userspace-Programm, das Sie in diesem Fall benötigen, ist inotifywait(im Lieferumfang enthalten inotify-tools, installieren Sie es bei Bedarf zuerst).
Angenommen, das Verzeichnis shopbefindet sich im /foo/barVerzeichnis, legen wir eine Überwachung für die /foo/bar/shopErstellung fest, und zwar rmsofort, wenn sie erstellt wird:
inotifywait -qme create /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
inotifywait -qme create /foo/barÜberwachungsverzeichnis /foo/barfür jede Datei / jedes Verzeichnis, das erstellt werden könnte, dh Überwachung für jedes createEreignis
Wenn erstellt, awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'überprüft , ob die Datei ein Verzeichnis sein geschieht und der Name ist shop( /,ISDIR shop$/), wenn so rmdas Verzeichnis ( system("rm -r -- /foo/bar/shop"))
Sie müssen den Befehl als Benutzer ausführen, der über die Schreibberechtigung /foo/barfür shopdas Verzeichnis verfügt, um ihn aus dem Verzeichnis zu entfernen .
Wenn Sie auch mv-ing-Vorgänge überwachen möchten , fügen Sie auch watch for moved_toevent hinzu:
inotifywait -qme create,moved_to /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
Beachten Sie, wenn Sie nach einer Datei suchen, nicht nach einem Verzeichnis mit dem Namen shop:
inotifywait -qme create /foo/bar | \
awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'
inotifywait -qme create,moved_to /foo/bar | \
awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'