Ви не можете, враховуючи, що користувач, який створює каталог, має достатній дозвіл на запис у батьківському каталозі.
Ви можете замість цього використовувати 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
операції з відстеженням , додайте також слідкувати за moved_to
подіями:
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") }'