Bạn không thể, cho người dùng tạo thư mục có đủ quyền để viết trên thư mục mẹ.
Thay vào đó, bạn có thể tận dụng nhóm inotifycác cuộc gọi hệ thống do hạt nhân Linux cung cấp, để theo dõi việc tạo (và tùy chọn mv-ing) của thư mục shoptrong thư mục đã cho, nếu được tạo (hoặc tùy chọn mv-ed), rmthư mục.
Chương trình không gian người dùng bạn cần trong trường hợp này là inotifywait(đi kèm inotify-tools, cài đặt nó trước nếu cần).
Giả sử thư mục shopsẽ nằm trong /foo/barthư mục, hãy thiết lập giám sát để /foo/bar/shoptạo và rmngay lập tức nếu được tạo:
inotifywait -qme create /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
inotifywait -qme create /foo/bar/foo/barthư mục đồng hồ cho bất kỳ tập tin / thư mục có thể được tạo, tức là xem cho bất kỳ createsự kiện
Nếu được tạo, hãy awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'kiểm tra xem tệp có phải là thư mục không và tên là shop( /,ISDIR shop$/), nếu vậy rmthư mục ( system("rm -r -- /foo/bar/shop"))
Bạn cần chạy lệnh với tư cách là người dùng có quyền ghi trên thư /foo/barmục để xóa shopkhỏi thư mục.
Nếu bạn cũng muốn theo dõi các mvhoạt động -ing, hãy thêm đồng hồ cho moved_tosự kiện:
inotifywait -qme create,moved_to /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
Chỉ cần lưu ý, nếu bạn đang tìm kiếm một tập tin, không phải thư mục, được đặt tên 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") }'