Вы не можете, учитывая, что пользователь, создающий каталог, имеет достаточные права для записи в родительский каталог.
Вместо этого вы можете использовать inotify
семейство системных вызовов, предоставляемых ядром Linux, для наблюдения за созданием (и необязательно mv
-ing) каталога shop
в данном каталоге, если он создан (или необязательно mv
-ed), rm
каталогом.
Программа пользовательского пространства, которая вам нужна в этом случае inotifywait
(поставляется вместе inotify-tools
, сначала установите ее, если необходимо).
Предполагая, что каталог shop
будет находиться в /foo/bar
каталоге, давайте установим мониторинг для /foo/bar/shop
создания, и rm
сразу же, если он будет создан:
inotifywait -qme create /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
inotifywait -qme create /foo/bar
отслеживает /foo/bar
каталог для любого файла / каталога, который может быть создан, т.е. отслеживает любое create
событие
Если создан, awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
проверяет, является ли файл каталогом, а имя - shop
( /,ISDIR shop$/
), если да, rm
то каталог ( system("rm -r -- /foo/bar/shop")
)
Вам нужно выполнить команду как пользователь, у которого есть разрешение на запись в каталог /foo/bar
для удаления shop
из каталога.
Если вы mv
тоже хотите отслеживать операции -ing, добавьте watch for moved_to
event:
inotifywait -qme create,moved_to /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
Просто обратите внимание, что если вы ищете файл, а не каталог с именем 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") }'