Tôi đã hỏi câu hỏi tương tự cho các hộp thả học sinh trong danh sách gửi thư samba vài năm trước (http://lists.samba.org/archive/samba/2008-September/143610.html) và câu trả lời đã có hiệu quả với chúng tôi. Bạn cần các thuộc tính acl mở rộng trên hệ thống tệp của mình (từ gói acl), đây là câu trả lời của Jeremy Allison ...
Ok, vấn đề là sinh viên cần có khả năng đọc thư mục chứa để có thể kéo và thả các tệp mới ở đó. Lý do là Samba cần có thể quét thư mục thay mặt họ để thực hiện tra cứu không nhạy cảm.
Nhưng miễn là bạn không phiền khi cho phép sinh viên xem tên của các tệp khác, bạn có thể thiết lập DropBox để sinh viên có thể ghi vào đó (và các tệp của riêng họ) nhưng không chỉnh sửa hoặc xem các tệp khác.
Trước tiên, bạn muốn đảm bảo rằng các tệp được tạo trong thư mục DropBox không thuộc sở hữu của nhóm chính của sinh viên, mà bởi chủ sở hữu nhóm của thư mục DropBox. Vì thế :
giáo viên chgrp DropBox
để làm cho nó thuộc sở hữu của nhóm giáo viên. Sau đó, thiết lập bit setgid trên thư mục DropBox để đảm bảo rằng các tệp được tạo trong đó có một nhóm giáo viên sở hữu.
chmod g + s DropBox
Sau đó, đảm bảo rằng một tệp trong DropBox chỉ có thể được đổi tên hoặc xóa bởi chủ sở hữu của tệp hoặc bởi chủ sở hữu của thư mục hoặc bằng root (cùng quyền mà / tmp có).
chmod + t DropBox
Sau đó cho phép sinh viên viết vào thư mục bằng cách thêm ACL
setfacl -mg: sinh viên: rwx DropBox
Chừng nào acl defaul được đặt sao cho "những người khác" không có quyền, các tệp được viết bởi một học sinh sẽ được sở hữu bởi chính họ nhưng sẽ có một nhóm "giáo viên" sở hữu và sinh viên sẽ không thể đọc từng những tập tin khác.
Nếu bạn cần phải làm cho các tệp thuộc sở hữu của chủ sở hữu thư mục, không phải bởi các sinh viên đã tạo chúng, bạn cần thiết lập một chia sẻ riêng như mô tả ở trên, nhưng sau đó thêm tham số cấp độ chia sẻ:
chủ sở hữu thừa kế = có
sẽ khiến các tệp được tạo trong các thư mục trong chia sẻ đó được sở hữu bởi thư mục chứa chứ không phải chủ sở hữu tạo.