Przycisk VPN działa u administratora, a u wszystkich innych zawodzi, więc ktoś dodaje wiersz do sudoers. Ten wiersz zwykle żyje dłużej niż problem, który miał rozwiązać, i często daje więcej, niż przycisk potrzebuje. Zanim edytujesz politykę, sprawdź, czy obsługiwany właściciel połączenia już potrafi wykonać tę pracę. Trzy poniższe warunki decydują, czy sudo w ogóle wchodzi w grę.

Warunek 1: obsługiwany właściciel potrafi to zrobić bez sudo

Na większości pulpitów Linux menedżer sieci już posiada połączenia VPN, a jego autoryzacja przechodzi przez polkit, a nie sudo. Użytkownik, któremu wolno podnieść połączenie, może to zrobić z wiersza poleceń bez żadnej reguły root. Sprawdź, co menedżer pozwala, zanim uznasz, że przycisk potrzebuje uprawnienia. Jeśli odpowiedź brzmi tak, zmiana w sudoers rozwiązuje problem, którego nie ma.

nmcli connection show
nmcli connection up "Work VPN"

Jeśli menedżer odmawia, przeczytaj dlaczego: brakująca reguła polkit, połączenie należące do innego użytkownika lub profil zapisany tam, gdzie użytkownik nie może go odczytać. Każdy z tych przypadków ma obsługiwaną poprawkę węższą niż reguła sudo. Podniesienie uprawnień to ostatnia deska ratunku, nie pierwsza.

Warunek 2: reguła wskazuje jeden plik wykonywalny i jego argumenty

Jeśli sudo jest naprawdę potrzebne, reguła powinna wskazywać dokładne polecenie i, gdzie to możliwe, argumenty, których może użyć. Reguła pozwalająca użytkownikowi uruchomić skrypt owijający jest tylko tak bezpieczna jak uprawnienia tego skryptu, bo użytkownik może edytować to, co wykona root. Reguła z dzikim znakiem po poleceniu to ten sam problem w krótszej formie.

sudo -l -U alice
ls -l /usr/local/sbin/vpn-up

Sprawdź każdą ścieżkę w łańcuchu polecenia: plik binarny, wywoływany skrypt, czytany plik konfiguracyjny i każdy katalog pomiędzy. Jeśli którykolwiek z nich jest zapisywalny przez użytkownika, ograniczona reguła jest w praktyce nieograniczonym rootem. Argumenty też mają znaczenie, bo polecenie przyjmujące ścieżkę konfiguracji można skierować na plik kontrolowany przez użytkownika. Pisz regułę dla operacji, nie dla przycisku.

Zatrzymaj się, jeśli polecenie potrzebuje pliku kontrolowanego przez użytkownika, aby działać. Wtedy projekt jest błędny i żadna składnia sudoers go nie zabezpieczy.

Warunek 3: parsowana jest cała polityka, nie tylko twój wiersz

Weryfikuj edytorem, który blokuje plik i sprawdza składnię, oraz weryfikuj złożoną politykę, a nie fragment. Plik, który parsuje się sam, wciąż może zepsuć kolejność dołączania lub zduplikować regułę w sposób zmieniający zachowanie.podręcznik visudo opisuje zarówno blokujący edytor, jak i używany tutaj tryb tylko sprawdzania.

sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher

Kontrola zgłasza plik i wiersz, gdy zawiedzie, i właśnie ten raport jest użyteczną częścią. Napraw zamierzoną zmianę przez edytor, zamiast wymuszać zapis znanego błędu, bo zepsuta polityka może naraz zablokować wszystkich administratorów. Pliki w katalogu dołączania też potrzebują własności i trybu wymaganych przez podręcznik, inaczej zostaną zignorowane lub odrzucone. Składnia to tylko pierwsza brama: po jej przejściu przeczytaj regułę ponownie i zapytaj, na co naprawdę pozwala.

Zatrzymaj się, jeśli jedynym sposobem na działanie zmiany jest wyłączenie kontroli składni. To nie polityka, to awaria czekająca na restart.

Odzyskiwanie: zachowaj sesję, która wciąż działa

Zanim zapiszesz, upewnij się, że autoryzowana sesja administracyjna jest już otwarta i że istnieje druga droga do maszyny. Błąd w sudoers może odebrać ci możliwość naprawienia go, a przycisk na pulpicie nie jest wart tego ryzyka. Jeśli sudo jest już zepsute, użyj udokumentowanej ścieżki odzyskiwania systemu, zamiast improwizować własną.

sudo -n true
id

Alternatywy takie jak pkexec zależą od własnej instalacji i polityki, więc nie są gwarantowanym drugim monitem o roota. Trzymaj lokalną autoryzację oddzielnie także od dostarczania sekretu VPN: reguła sudo nie odblokuje nieobecnego agenta sekretów i nie spełnia MFA bramy. Po poprawce przetestuj zwykłe konto wykonujące tylko zamierzoną operację, a potem użyj zwykłych elementów sterujących menedżera.

Decyzja kończy się, gdy potrafisz powiedzieć, który warunek uzasadnił sudo, co wskazuje reguła, że cała polityka jest parsowana i jak byś się odzyskał, gdyby nie. Uprzywilejowany launcher, który kosztuje cię dostęp administracyjny, to zły interes, i zwykle można go uniknąć.

Powiązane artykuły