Đặt chủ sở hữu mặc định "tự động" sẽ yêu cầu một thư mục setuid
hoạt động như thế nào setgid
. Tuy nhiên, trong khi điều này có thể được cấu hình trên FreeBSD, các hệ thống UNIX & Linux khác chỉ cần bỏ qua u+s
. Trong trường hợp của bạn, tuy nhiên, có thể có một giải pháp khác.
Điều tôi muốn là có một thư mục có thể được chia sẻ bằng cách thêm một nhóm vào người dùng. Bất cứ điều gì được tạo trong thư mục này đều kế thừa lược đồ cấp phép từ cha mẹ của nó. Nếu có một cách tốt hơn những gì tôi đang cố gắng, thì tôi là tất cả.
Vì vậy, về cơ bản, từ những gì tôi thấy, bạn muốn kiểm soát quyền truy cập vào một thư mục bằng cơ chế nhóm. Tuy nhiên, điều này không yêu cầu bạn hạn chế các quyền trong toàn bộ cấu trúc thư mục. Trên thực tế, --x
bit thực thi thư mục có thể chỉ là những gì bạn cần. Tôi sẽ cho bạn một ví dụ. Giả sử răng...
- Nhóm kiểm soát truy cập vào
group_dir
thư mục là ourgroup
.
- Chỉ những người trong
ourgroup
nhóm có thể truy cập group_dir
.
user1
và user2
thuộc về ourgroup
.
- Ô mặc định là 0022.
... Hãy xem xét các thiết lập sau:
drwxrws--- root:ourgroup |- group_dir/
drwxr-sr-x user1:ourgroup |---- group_dir/user1_submission/
drwxr-sr-x user2:ourgroup |---- group_dir/user2_submission/
-rw-r--r-- user2:ourgroup |-------- group_dir/user2_submission/README
Ở đây, giả sử mọi mục được tạo bởi chủ sở hữu của nó.
Bây giờ, trong thiết lập này:
- Tất cả các thư mục có thể được duyệt tự do bởi tất cả mọi người trong
ourgroup
. Bất cứ ai trong nhóm cũng có thể tạo, di chuyển, xóa các tệp ở bất kỳ đâu bên trong group_dir
(nhưng không sâu hơn).
- Bất cứ ai không tham gia
ourgroup
sẽ bị chặn tại group_dir
, và do đó sẽ không thể thao túng bất cứ điều gì theo nó. Chẳng hạn, user3
(không phải là thành viên của ourgroup
), không thể đọc group_dir/user2_submission/README
(mặc dù anh ta có r--
quyền đối với chính tệp đó).
Tuy nhiên, có một vấn đề nhỏ trong trường hợp này: vì có ô thông thường, các mục được tạo bởi người dùng không thể bị thao túng bởi các thành viên khác trong nhóm. Đây là nơi ACL xuất hiện. Bằng cách đặt quyền mặc định, bạn sẽ đảm bảo mọi thứ đều ổn dù giá trị umask:
$ setfacl -dRm u::rwX,g::rwX,o::0 group_dir/
Cuộc gọi này đặt:
- Quyền mặc định
rw(x)
cho chủ sở hữu.
- Quyền mặc định
rw(x)
cho nhóm.
- Không có quyền theo mặc định cho những người khác. Lưu ý rằng vì dù sao những người khác không thể truy cập
group_dir
, nên thực sự không có vấn đề gì về quyền của họ bên dưới nó.
Bây giờ, nếu tôi tạo một mục như user2
:
$ touch group_dir/user2_submission/AUTHORS
$ ls -l group_dir/user2_submission/AUTHORS
rw-rw---- user2:ourgroup group_dir/user2_submission/AUTHORS
Với ACL này, chúng ta có thể thử xây dựng lại cấu trúc trước đây của mình:
drwxrws---+ root:ourgroup |- group_dir/
drwxrws---+ user1:ourgroup |---- group_dir/user1_submission/
drwxrws---+ user2:ourgroup |---- group_dir/user2_submission/
-rw-rw----+ user2:ourgroup |-------- group_dir/user2_submission/README
Ở đây một lần nữa, mỗi mục được tạo bởi chủ sở hữu của nó.
Ngoài ra, nếu bạn muốn cung cấp thêm một chút sức mạnh / bảo mật cho những người sử dụng thư mục, bạn có thể muốn xem xét một chút dính. Ví dụ, điều này sẽ ngăn không cho user1
xóa user2_submission
(vì anh ta có -w-
quyền trên group_dir
):
$ chmod +t group_dir/
Bây giờ, nếu user1
cố gắng xóa user2
thư mục của anh ta, anh ta sẽ nhận được một sự đáng yêu Operation not permitted
. Tuy nhiên, lưu ý rằng trong khi điều này ngăn chặn sửa đổi cấu trúc thư mục trong group_dir
, các tệp và thư mục bên dưới vẫn có thể truy cập được:
user1@host $ rm -r user2_submission
Operation not permitted
user1@host $ cat /dev/null > user2_submission/README
user1@host $ file user2_submission/README
user2_submission/README: empty (uh-oh)
Một điều nữa cần tính đến là các ACL chúng tôi đã sử dụng thiết lập quyền mặc định . Do đó, chủ sở hữu của một mặt hàng có thể thay đổi các quyền liên quan đến nó. Chẳng hạn, user2
hoàn toàn có thể chạy ...
$ chown g= user2_submission/ -R
or
$ chgrp nobody user2_submission -R
... do đó làm cho thư mục gửi đầy đủ của anh ấy không có sẵn cho bất cứ ai trong nhóm.
Tuy nhiên, vì ban đầu bạn sẵn sàng cấp rws
quyền truy cập đầy đủ cho bất kỳ ai trong nhóm, tôi cho rằng bạn tin tưởng những người dùng này và bạn sẽ không mong đợi quá nhiều hoạt động độc hại từ họ.