Cho phép người dùng đọc một số thư mục nhà của người dùng khác


10

Tôi chưa quen với quản trị hệ thống và tôi có một truy vấn liên quan đến sự cho phép. Tôi có một nhóm được gọi administration. Bên trong administrationnhóm, tôi có những người sử dụng user1, user2, user3, superuser. Tất cả người dùng trong administrationnhóm. Bây giờ, tôi cần cấp quyền cho người dùng superuserđể có thể xem /homethư mục của những người dùng khác. Tuy nhiên, tôi không muốn user1, user2, user3để xem nhà của bất kỳ người dùng nào khác ngoài bản thân mình. (Đó là, user1chỉ có thể thấy user1nhà của mình và vân vân).

Tôi đã tạo người dùng và nhóm và chỉ định tất cả người dùng cho nhóm. Làm thế nào tôi nên chỉ định các quyền cho superuserbây giờ?

Nói cách khác, tôi đang nghĩ đến việc có hai nhóm (nói NormalUsersSuperuser). Các NormalUsersnhóm sẽ có những người sử dụng user1, user2user3. Các Superusernhóm sẽ chỉ có người sử dụng Superuser. Bây giờ, tôi cần Superusercó quyền truy cập đầy đủ vào các tệp của người dùng trong nhóm NormalUsers. Điều này có thể có trong Linux không?



Trong câu hỏi trước đây của tôi, tôi quan tâm nhiều hơn đến việc chỉnh sửa tệp / etc / sudoers và biến người dùng thành quản trị viên một phần. Ở đây, tôi đang cố gắng sửa đổi các quyền của người dùng cục bộ. Vâng, nó tương tự như những gì tôi đang cố gắng đạt được, nhưng tôi đang cố gắng tiếp cận một phương pháp khác ở đây.
Ramesh

Câu trả lời:


10

Nếu người dùng hợp tác, bạn có thể sử dụng danh sách kiểm soát truy cập (ACL). Đặt ACL trên thư mục chính của user1(và bạn bè) cấp quyền truy cập đọc superuser. Đặt cả ACL mặc định, cho các tệp mới được tạo và cả ACL trên các tệp hiện có.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 có thể thay đổi ACL trên các tập tin của anh ấy nếu anh ấy muốn.

Nếu bạn muốn luôn luôn cấp superuserquyền truy cập đọc vào user1các tệp của bạn, bạn có thể tạo một chế độ xem khác cho các thư mục chính của người dùng với các quyền khác nhau, với các ràng buộc .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

Các tệp được truy cập thông qua ~ superuser / spylass / user1 có thể đọc được trên thế giới. Khác với quyền, ~superuser/spyglass/user1là chế độ xem user1thư mục chính của. Vì superuserlà người dùng duy nhất có thể truy cập ~superuser/spyglass, chỉ superusercó thể hưởng lợi từ việc này.


Trên hệ thống của tôi, các quyền và tên người dùng được hoán đổi : setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms

10

Bạn có thể sử dụng ACL để cấp quyền truy cập vào một thư mục cụ thể cho một nhóm tùy ý.

Ví dụ: nếu bạn đã chạy setfacl -m g:dba:rwx /home/foo, thì các thành viên của nhóm dba sẽ có quyền rwx trên đó, bất kể nhóm nào sở hữu thư mục.

Có lẽ bạn cũng muốn đặt ACL "mặc định" (ACL cho các đối tượng mới được tạo trong thư mục) để bao gồm quyền này.


vâng, chính xác..Tôi cũng phát hiện ra điều tương tự nhưng vẫn không chắc chắn liệu có nên cấp ACL trong máy chủ cho người dùng LDAP hay không.
Ramesh

@Ramesh Chà, nếu họ là người dùng trên hệ thống (vì bạn đang sử dụng nss-ldap, sssd, v.v.), thì tôi không chắc tại sao nó sẽ không ổn.
derobert

Tôi đã cố gắng tái tạo điều này trên giường thử nghiệm. Khi đăng nhập với tư cách là người dùng (ví dụ foo), tôi thấy một thông báo cảnh báo là "các quyền nên được đặt thành 644". Tôi tin rằng cảnh báo có thể được bỏ qua. Nhưng, tôi không muốn người dùng phòng thí nghiệm biết rằng tài khoản người dùng của họ đã bị xâm phạm. Khi tôi thay đổi rwx thành chỉ r trong lệnh setfacl, tôi không thể thấy thư mục của foo.
Ramesh

2
@Ramesh Bạn cần + x để thực sự đi qua các thư mục. Tôi không chắc những gì nói với bạn rằng một thư mục nên là 644, thật ngớ ngẩn, nó phải là 755 hoặc tương tự. Nhưng dù bằng cách nào, người dùng sẽ thấy trường quyền + trong ls và có thể chạy getfacl để thấy nó không bí mật.
derobert

Được rồi, tôi đã nhận được thông báo cảnh báo, thư mục $ HOME của người dùng phải thuộc sở hữu của người dùng và không thể ghi bởi người dùng khác. Tôi đã xóa quyền ghi trong lệnh setacl và bây giờ tôi không thấy thông báo cảnh báo.
Ramesh

0

Thật không may, thực sự không có cách nào để trực tiếp làm điều này trên vanilla Linux.

Bạn có thể tạo một nhóm mới trong sudoers cho quản trị viên một phần với danh sách trắng các lệnh có thể chấp nhận mà bạn muốn cho phép họ chạy.

Tuy nhiên, để đạt được chính xác những gì bạn đang yêu cầu, bạn sẽ phải sử dụng Apparmor hoặc SELinux để đạt được những gì bạn muốn. Thật không may, cả hai công cụ này đều không dễ cài đặt và sử dụng, và các ví dụ nằm ngoài phạm vi của một câu trả lời nhanh ở đây.


1
Linux đã hỗ trợ ACL được một thời gian rồi. ACL cho phép bạn làm điều này.
derobert

Vâng, tôi chỉ tìm thấy giải pháp đó và cập nhật câu trả lời. Tuy nhiên, tôi vẫn không biết liệu nó có thể được sử dụng trong máy chủ không và điều đó cũng cho người dùng LDAP.
Ramesh

@derobert Từ những gì tôi hiểu, không thể cấp cho ai đó quyền cấp gốc thông qua sudo trong khi sử dụng đồng thời ACL để hạn chế quyền truy cập. Bạn phải sử dụng SELinux hoặc MAC khác để đạt được điều đó.
Thụy Sĩ

1
Tôi nghĩ khi OP nói người dùng "siêu người dùng", anh ta có nghĩa là theo nghĩa đen - không phải root.
derobert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.