Czy można użyć pliku klucza jako hasła do sudo?


11

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 NOPASSWDopcji z mojego sudoerspliku, 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:

  1. Czy jest to możliwe w przypadku sudo?
  2. Jeśli nie, czy byłbym w stanie napisać program, który pozwoli mi to zrobić?
  3. 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.


1
Czy pam_usb spełnia twoje potrzeby?
StrongBad

@StrongBad Oh ... tak. Wygląda na to, że nie robi to od razu tylko sudo, loguje się i sudo razem, ale to nie ma dla mnie znaczenia. Dzięki!
Gage Sorrell,

2
Okej, dla wyjaśnienia, chcesz być stale zalogowany i po prostu uniemożliwić innym korzystanie z sudo na twoim koncie.
StrongBad

@StrongBad Correct.
Gage Sorrell,

Możesz być w stanie skonfigurować coś przy użyciu rootpwflagi w /etc/sudoersplikach i skonfigurować pam_usblogowanie roota.
RubberStamp,

Odpowiedzi:


3

Nie jestem pewien, czy rozumiem, dlaczego ta NOPASSWDopcja 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ć mu sudoprawa bez hasła , tj. Dodać do /etc/sudoerspliku następujący wiersz :

superuser ALL=(ALL) NOPASSWD:ALL

Następnie możesz wyłączyć logowanie hasłem i skonfigurować uwierzytelnianie SSH tylko dla tego użytkownika, tj. Uruchomić passwd -l superuseri dodać następującą sekcję do swojego /etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

Następnie utwórz parę kluczy SSH dla tego użytkownika. Dodaj klucz publiczny /home/superuser/.ssh/authorized_keysi umieść klucz prywatny na dysku flash. Następnie, jeśli chcesz korzystać z superuserkonta, podłącz dysk flash i ssh do superuserkonta za pomocą klucza prywatnego. I voila! Teraz masz sudodla 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).


łatwa odpowiedź, aby wyjaśnić, dlaczego warto to zrobić. dla tego serwera próbuję wrócić, mam tylko klucz root, brak dostępu root ssh, jestem zablokowany w ec2-user, którego sudo pyta pw, którego nie mam. scpdedowałem mój klucz root do serwera, więc idealnie chciałbym teraz użyć tego klucza, aby uzyskać dostęp do sudo, a następnie mogę naprawić rzeczy.
Brian Thomas
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.