Problem z innymi sugestiami jest taki
- działają tylko wtedy, gdy masz dostęp do korporacyjnej sieci LAN (lub VPN)
- musisz utrzymywać plik sudoers na każdym komputerze przez cały czas
- jako bonus, dla mnie nie działały
Zamiast tego chciałem czegoś takiego
- buforuje zarówno poświadczenia, jak i dostęp sudo
- jest zarządzany centralnie
Rzeczywistym rozwiązaniem jest użycie SSSD i rozszerzenie schematu AD. W ten sposób SSSD okresowo pobiera ustawienia sudo i poświadczenia użytkownika z AD i utrzymuje ich lokalną pamięć podręczną. Reguły sudo są następnie przechowywane w obiektach AD, w których można ograniczyć reguły do komputerów, użytkowników i poleceń, a wszystko to bez dotykania pliku sudoers na stacjach roboczych.
Dokładny samouczek jest zbyt długi, aby go tu wyjaśnić, ale możesz znaleźć przewodnik krok po kroku i kilka skryptów ułatwiających automatyzację tutaj:
TL; DR:
OGŁOSZENIE
Pobierz najnowszą wersję sudo , pobierz plik doc / schema.ActiveDirectory , a następnie zaimportuj go (pamiętaj, aby zmodyfikować ścieżkę domeny zgodnie z nazwą domeny):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Sprawdź to za pomocą Edycji ADSI: otwórz kontekst nazewnictwa schematu i poszukaj klasy sudoRole .
Teraz utwórz jednostkę sudoers w katalogu głównym domeny, ta jednostka organizacyjna będzie przechowywać wszystkie ustawienia sudo dla wszystkich stacji roboczych z systemem Linux. W ramach tej jednostki organizacyjnej utwórz obiekt sudoRole. Aby utworzyć obiekt sudoRole, musisz użyć Edycji ADSI, ale po utworzeniu możesz go zmodyfikować za pomocą Użytkownicy i komputery usługi Active Directory .
Załóżmy, że mam komputer o nazwie foo32linux , użytkownik o nazwie stewie.griffin i chcę pozwolić mu uruchamiać wszystkie polecenia z sudo na tym komputerze. W takim przypadku tworzę obiekt sudoRole pod OU sudoers . W sudoRole możesz użyć dowolnej nazwy - trzymam się nazwy komputera, ponieważ używam reguł dla poszczególnych komputerów. Teraz ustaw jego atrybuty w następujący sposób:
- sudoHost : foo32linux
- sudoCommand : ALL
- sudoUser : stewie.griffin
Do poleceń możesz także użyć określonych pozycji, takich jak / bin / less lub cokolwiek innego.
SSSD
Dodaj do swojego /etc/sssd/sssd.conf przynajmniej:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD odświeża lokalną pamięć podręczną przy użyciu zaktualizowanych reguł co kilka godzin, ale najprostszym sposobem przetestowania jest ponowne uruchomienie komputera. Następnie zaloguj się z użytkownikiem AD i sprawdź:
sudo -l
Powinien zawierać listę wszystkich powiązanych wpisów dodanych do tego użytkownika i komputera. Bułka z masłem!
%Domain^Admins ALL=(ALL) ALL