Non è possibile, dato che l'utente che crea la directory dispone dell'autorizzazione sufficiente per scrivere nella directory principale.
Puoi invece sfruttare la inotify
famiglia di chiamate di sistema fornite dal kernel Linux, per cercare la creazione (e facoltativamente mv
-ing) della directory shop
nella directory data, se creata (o facoltativamente mv
-ed), rm
la directory.
Il programma userspace di cui hai bisogno in questo caso è inotifywait
(viene fornito inotify-tools
, installalo prima se necessario).
Supponendo che la directory shop
risieda nella /foo/bar
directory, impostiamo un monitoraggio per la /foo/bar/shop
creazione e rm
istantaneamente se creato:
inotifywait -qme create /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
inotifywait -qme create /foo/bar
controlla la /foo/bar
directory per qualsiasi file / directory che potrebbe essere creata, ad esempio guarda per qualsiasi create
evento
Se creato, awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
controlla se il file è una directory e il nome è shop
( /,ISDIR shop$/
), in tal caso rm
la directory ( system("rm -r -- /foo/bar/shop")
)
È necessario eseguire il comando come utente con autorizzazione di scrittura sulla directory /foo/bar
per la rimozione shop
dalla directory.
Se vuoi monitorare mv
anche le operazioni -ing, aggiungi anche watch for moved_to
event:
inotifywait -qme create,moved_to /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
Solo per notare, se stai cercando un file, non una directory, chiamato 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") }'