Kontekst
Lubię pracować publicznie na swoim laptopie, ale lubię też używać sudo bez hasła. Opierając się na tym, co wiem teraz, użyłbym NOPASSWD
opcji z mojego sudoers
pliku, ale oczywiście każdy mógł użyć sudo, jak sobie życzy.
Jedną ważną myślą, która przychodzi mi do głowy, jest to, że istnieją programy blokujące. Wolałbym jednak używać dysku flash (i używać go tylko do sudo), ponieważ (1) jest on szybszy, (2) łatwiejszy niż wprowadzanie hasła i (3) Nie troszczę się o ludzi, którzy uzyskują dostęp do moich treści i nie robią nikczemnych rzeczy rzeczy: laptop byłby dostępny publicznie dla innych ludzi, a jedyną własnością intelektualną na moim laptopie jest bardzo prosty projekt Angular.
Ponadto ja i inni mogą chcieć zapobiec niewłaściwemu użyciu sudo na komputerze, na którym nie działa środowisko X lub Wayland. Moja obecna praca wymaga nowoczesnej przeglądarki internetowej, ale jeśli kiedykolwiek będę miał okazję nie używać X i po prostu korzystać z multipleksera, robię to - mój laptop jest trochę stary i wolny.
Pytanie
Chciałbym umieścić plik klucza na dysku flash i po prostu podłączyć dysk flash, gdy jestem przy laptopie, i wyjąć go, gdy się od niego oddalę.
Oto moje trzy pytania wynikające z tego problemu:
- Czy jest to możliwe w przypadku sudo?
- Jeśli nie, czy byłbym w stanie napisać program, który pozwoli mi to zrobić?
- Jeśli tak, w jakim języku najlepiej pisać ten program?
(4. [Być może pytanie z zewnątrz] Czy ten pakiet może być osobny, czy też powinien być rozwidleniem sudo?)
Uwaga
Jeśli jest to istotne, moja konfiguracja to Arch Linux z bspwm, bez środowiska graficznego. Większość moich prac to tworzenie stron internetowych w urxvt / vim i sprawdzanie ich w Chrome.
rootpw
flagi w/etc/sudoers
plikach i skonfigurowaćpam_usb
logowanie roota.Odpowiedzi:
Nie jestem pewien, czy rozumiem, dlaczego ta
NOPASSWD
opcja sama w sobie nie spełnia twoich wymagań, ale jeśli chcesz wymagać obecności dysku flash, mogę wymyślić coś, co może prawie zrobić to, czego szukasz.Jest to raczej obejście, ale można utworzyć, powiedzmy
superuser
, lokalnego użytkownika administracyjnego i przyznać musudo
prawa bez hasła , tj. Dodać do/etc/sudoers
pliku następujący wiersz :Następnie możesz wyłączyć logowanie hasłem i skonfigurować uwierzytelnianie SSH tylko dla tego użytkownika, tj. Uruchomić
passwd -l superuser
i dodać następującą sekcję do swojego/etc/ssh/sshd_config
:Następnie utwórz parę kluczy SSH dla tego użytkownika. Dodaj klucz publiczny
/home/superuser/.ssh/authorized_keys
i umieść klucz prywatny na dysku flash. Następnie, jeśli chcesz korzystać zsuperuser
konta, podłącz dysk flash i ssh dosuperuser
konta za pomocą klucza prywatnego. I voila! Teraz maszsudo
dla swojego użytkownika hasło bez hasła . Oczywiście po zakończeniu będziesz musiał zakończyć sesje powłoki - odłączenie dysku flash nie wystarczy. Chociaż myślę, że można również skonfigurować przechwytywanie polecenia wstępnego, aby sprawdzić klucz prywatny i wyjść automatycznie, jeśli nie jest obecny (lub jeśli jest nieprawidłowy).źródło