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