Pozwól użytkownikowi czytać katalogi domowe innych użytkowników

10

Jestem nowy w administrowaniu systemem i mam zapytanie dotyczące uprawnień. Mam grupę o nazwie administration. Wewnątrz administrationgrupy, mam użytkowników user1, user2, user3, superuser. Wszyscy użytkownicy są w administrationgrupie. Teraz muszę przyznać użytkownikowi uprawnienia, aby superusermóc przeglądać /homekatalog innych użytkowników. Jednak nie chcę user1, user2, user3aby zobaczyć dom innego użytkownika innego niż siebie. (To znaczy, user1powinien widzieć tylko user1dom i tak dalej).

Utworzyłem użytkowników i grupy i przypisałem wszystkich użytkowników do grupy. Jak mam określić uprawnienia na superuserteraz?

Innymi słowy, myślę o posiadaniu dwóch grup (powiedz NormalUsersi Superuser). NormalUsersGrupa będzie mieć więcej użytkowników user1, user2a user3. SuperuserGrupa będzie miała tylko użytkownikowi Superuser. Teraz potrzebuję Superusermieć pełny dostęp do plików użytkowników w grupie NormalUsers. Czy to możliwe w Linuksie?

Ramesh
źródło
Czym różni się to od twojego poprzedniego pytania ?
Gilles „SO- przestań być zły”,
W poprzednim pytaniu byłem bardziej zainteresowany edycją pliku / etc / sudoers i uczynieniem użytkownika częściowo administratorem. Tutaj próbuję zmodyfikować uprawnienia lokalnego użytkownika. Tak, jest podobny do tego, co próbuję osiągnąć, ale próbuję podejść tutaj do innej metody.
Ramesh,

Odpowiedzi:

10

Jeśli użytkownicy współpracują, możesz użyć list kontroli dostępu (ACL). Ustaw ACL w katalogu domowym user1(i znajomych), który zapewnia dostęp do odczytu superuser. Ustaw także domyślną listę ACL dla nowo tworzonych plików, a także listę ACL dla istniejących plików.

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

user1 może zmienić ACL w swoich plikach, jeśli chce.

Jeśli chcesz zawsze zapewniać superuserdostęp do odczytu user1plików, możesz utworzyć inny widok katalogów domowych użytkowników z różnymi uprawnieniami, z bindfs .

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

Pliki dostępne za pośrednictwem ~ superuser / spyglass / user1 są dostępne do odczytu na całym świecie. Oprócz uprawnień, ~superuser/spyglass/user1jest to widok user1katalogu domowego. Ponieważ superuserjest to jedyny użytkownik, który może uzyskać dostęp ~superuser/spyglass, tylko superuserz tego może skorzystać.

Gilles „SO- przestań być zły”
źródło
W moim systemie, uprawnienia i nazwa użytkownika są zamienione: setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms
10

Za pomocą list ACL można przyznać dostęp do określonego katalogu dowolnej grupie.

Na przykład, jeśli uruchomiłeś setfacl -m g:dba:rwx /home/foo, członkowie grupy dba mieliby na nią uprawnienia rwx, niezależnie od tego, która grupa jest właścicielem katalogu.

Prawdopodobnie będziesz również chciał ustawić „domyślną” listę ACL (listę ACL dla nowo utworzonych obiektów w katalogu), aby zawierała to uprawnienie.

derobert
źródło
tak, dokładnie ... ja też to odkryłem, ale nadal nie jestem pewien, czy dobrym pomysłem jest przyznanie list ACL na serwerze użytkownikom LDAP.
Ramesh,
@Ramesh Cóż, jeśli są użytkownikami w systemie (ponieważ używasz nss-ldap, sssd itp.), To nie jestem pewien, dlaczego nie byłoby OK.
derobert,
Próbowałem to powtórzyć na łóżku testowym. Gdy loguję się jako użytkownik (na przykład foo), widzę komunikat ostrzegawczy jako „uprawnienia powinny być ustawione na 644”. Wierzę, że ostrzeżenie można zignorować. Ale nie chcę, aby użytkownicy laboratorium wiedzieli, że ich konta użytkowników zostały naruszone. Kiedy zmieniam rwx na po prostu rw poleceniu setfacl, nie widzę katalogu foo.
Ramesh
2
@Ramesh Potrzebujesz + x, aby przeglądać katalogi. Nie jestem pewien, co mówi ci, że katalog powinien mieć 644, to głupie, powinno być 755 lub podobne. Ale tak czy inaczej, użytkownik zobaczy + w polu uprawnień ls i może uruchomić getfacl, aby to zobaczyć - to nie jest tajemnica.
derobert
W porządku, dostałem komunikat ostrzegawczy, katalog $ HOME użytkownika musi być własnością użytkownika i nie może być zapisywany przez innych użytkowników. Usunąłem uprawnienia do zapisu w poleceniu setacl i teraz nie widzę komunikatu ostrzegawczego.
Ramesh,
0

Niestety, nie ma żadnego sposobu, aby to zrobić bezpośrednio w waniliowym systemie Linux.

Możliwe, że będziesz w stanie utworzyć nową grupę w sudoerach dla częściowych administratorów z białą listą dopuszczalnych poleceń, które chcesz im umożliwić.

Aby jednak osiągnąć dokładnie to, o co prosisz, musisz użyć Apparmor lub SELinux, aby osiągnąć to, czego chcesz. Niestety żadne z tych narzędzi nie jest łatwe do skonfigurowania i użycia, a przykłady nie są tutaj objęte szybką odpowiedzią.

szwajcarski
źródło
1
Linux od dłuższego czasu obsługuje listy ACL. Listy ACL pozwalają to zrobić.
derobert,
Tak, właśnie znalazłem to rozwiązanie i zaktualizowałem odpowiedź. Jednak nadal nie wiem, czy można go użyć na serwerze, a także dla użytkowników LDAP.
Ramesh,
@derobert Z tego, co rozumiem, nie można dać komuś uprawnień na poziomie root za pośrednictwem sudo, jednocześnie używając list ACL do ograniczenia dostępu. Aby to osiągnąć, musisz użyć SELinuksa lub innego MAC.
Szwajcar
1
Myślę, że kiedy OP mówi „superużytkownik” użytkownika, ma na myśli to dosłownie - nie root.
derobert