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 inotify
Familie der vom Linux-Kernel bereitgestellten Systemaufrufe nutzen, um nach der Erstellung (und optionalen mv
Angabe) eines Verzeichnisses shop
in dem angegebenen Verzeichnis zu mv
suchen , 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 shop
befindet sich im /foo/bar
Verzeichnis, legen wir eine Überwachung für die /foo/bar/shop
Erstellung fest, und zwar rm
sofort, 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/bar
für jede Datei / jedes Verzeichnis, das erstellt werden könnte, dh Überwachung für jedes create
Ereignis
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 rm
das Verzeichnis ( system("rm -r -- /foo/bar/shop")
)
Sie müssen den Befehl als Benutzer ausführen, der über die Schreibberechtigung /foo/bar
für shop
das 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_to
event 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") }'