Linux không hỗ trợ kế thừa quyền, vì vậy bạn không thể thực hiện những gì bạn đã hỏi trong chủ đề câu hỏi.
Điều tốt nhất bạn có thể làm là thiết lập mặc định POSIX ACL sẽ áp dụng cho tất cả các tệp và thư mục mới được tạo. Đây không phải là thừa kế, chỉ là mặc định:
setfacl -m default:user:<username>:rwx <dir>
setfacl -m mặc định:nhóm:<tên nhóm>:rwx <dir>
Sau này, nếu bất kỳ ai tạo tệp hoặc thư mục trong (tất nhiên nếu họ được phép tạo đối tượng ở đó), đối tượng đó sẽ nhận được ACL bổ sung người dùng:<tên người dùng>:rwx
và nhóm:<tên nhóm>:rwx
. Bạn có thể đặt quyền mặc định cho chủ sở hữu và chủ sở hữu nhóm bằng cách đặt <username>
và <groupname>
trống.
"Mặc định" này chỉ có thể được đặt trên một thư mục, vì không có lý do gì để áp dụng điều này cho các tệp. Các quyền được đặt theo cách này cũng được che bằng các ô, vì vậy nếu một số bit bị bỏ trong ô, thì bit này sẽ bị loại bỏ khỏi một quyền. Chẳng hạn, khi bạn tạo một tệp, nếu bạn không cung cấp bit thực thi cho nó, thì nó sẽ không thể thực thi được (như mong đợi). Các thư mục con đã tạo cũng sẽ có cùng bộ ACL "mặc định", vì vậy các thư mục con của nó cũng sẽ có các ACL này được đặt. Bạn phải xóa hoặc thay đổi ACL trên các thư mục con sau khi tạo để dừng quá trình lan truyền này.
Kiểm tra ACL với getfacl <dir>
. Tất nhiên, có thể có một số mặc định như vậy (và có vẻ như bạn phải kết thúc với một số quy tắc); ít nhất, các yêu cầu mà tôi gặp phải luôn bắt buộc phải có ít nhất hai ACL nhóm mặc định).
Bạn không thể đặt "chủ sở hữu tệp mặc định" theo cách này, chủ sở hữu sẽ luôn được đặt để tạo uid hiệu quả cho quy trình. Theo mặc định, chủ sở hữu nhóm sẽ được đặt để xử lý gid, nhưng bạn có thể thay đổi điều đó bằng cách sử dụng thiết lập bit trên thư mục mẹ:
chmod g+s <dir>
sau đó, bất kỳ đối tượng nào được tạo trong thư mục đó sẽ sao chép chủ sở hữu nhóm của nó theo mặc định, ngay cả khi người dùng tạo không thuộc nhóm đó. Bit setgit này lan truyền đến các thư mục con.
Chủ sở hữu có thể đặt chủ sở hữu nhóm cho bất kỳ nhóm nào mà họ thuộc về. Nếu họ không thuộc về nhóm do setgid dẫn xuất, họ có thể thay đổi chủ sở hữu nhóm tệp của mình thành bất kỳ nhóm nào mà họ thuộc về, nhưng sau đó họ sẽ không thể thay đổi lại thành giá trị setgid.
Tôi muốn lưu ý một lần nữa một cách rõ ràng, đây là không phải thừa kế, đây là cài đặt mặc định không hoàn toàn giống nhau. Nếu bạn thay đổi điều gì đó trên đối tượng cha sau đó, các đối tượng đã được tạo sẽ luôn giữ quyền của chúng trong Linux.
Trong khi, ví dụ, trong Windows, khi bạn đặt ACL đối tượng phụ thành "kế thừa", việc thay đổi ACL cha sẽ ảnh hưởng đến hậu duệ, đó là kế thừa phù hợp.