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 inotify
cá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 shop
trong thư mục đã cho, nếu được tạo (hoặc tùy chọn mv
-ed), rm
thư 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 shop
sẽ nằm trong /foo/bar
thư mục, hãy thiết lập giám sát để /foo/bar/shop
tạo và rm
ngay 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/bar
thư 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ỳ create
sự 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 rm
thư 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/bar
mục để xóa shop
khỏi thư mục.
Nếu bạn cũng muốn theo dõi các mv
hoạt động -ing, hãy thêm đồng hồ cho moved_to
sự 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") }'