Użyj jednego hasła do administrowania, a drugiego do logowania do systemu

10

Jak mogę podać użytkownikowi jedno hasło do normalnego użytkowania podczas logowania, a drugie hasło do administrowania systemem i dostępu sudo ? Chcę, aby jeden użytkownik miał dwa hasła.

Varun Sridharan
źródło
1
Dlaczego nie utworzyć 2 kont, jednego do normalnego użytkowania, a drugiego do korzystania z sudo.
Luis Alvarado,
nie, potrzebuję go tylko na jednym koncie
Varun Sridharan
Dlaczego potrzebujesz tego, aby być jednym kontem? Możesz utworzyć osobne konto z dostępem sudo, ale bez osobnego folderu domowego, a następnie dodać tego użytkownika do tej samej grupy, co zwykły użytkownik i ustawić, aby korzystał z tego samego folderu domowego zsudo usermod -d /path/to/new/home
Warren Hill
@Varun Zaktualizowałem swoją odpowiedź krokami, które działają dla mnie od ostatniego komentarza. Czy możesz to sprawdzić i dać mi znać, czy to działa dla Ciebie?
Aaron D

Odpowiedzi:

16

Można to zrobić, zastępując ustawienia PAM (Pluggable Authentication Module) dla usługi sudo. Rób to z wielkim ryzykiem dla swojego komputera - nie kopiuj i wklejaj, chyba że rozumiesz, co robi polecenie, i zawsze przechowuj terminal główny - test testowy! - przed wylogowaniem, na wypadek, gdybyś musiał wrócić i naprawić coś.

Zalecam przeczytanie informacji o działaniu PAM, abyś wiedział, co zrobić, jeśli się zepsuje. Zalecam również, aby większość użytkowników podchodzi do tego problemu z innej perspektywy (tworząc osobne konto użytkownika do administrowania), ponieważ rozwiązanie może być podatne na ataki na tablicę mieszającą na hasło, jeśli nie ustawisz poprawnie swoich uprawnień.

Jeśli chcesz kontynuować, musisz zainstalować nowy moduł PAM. pam_pwdfile używa do uwierzytelniania pliku typu / etc / passwd w starym stylu, który doskonale nadaje się do używania różnych haseł dla różnych usług. Nie rozpoznaje konta - możesz utworzyć pary nazwa użytkownika / hasło dla użytkowników, którzy nie istnieją w systemie. Ponieważ będziemy używać go do sudo, nie ma to znaczenia, ponieważ pozwolimy sudo sprawdzić, czy konto istnieje w zwykły sposób.

sudo apt-get install libpam-pwdfile

Polecam także poręczny edytor plików htpasswd. Benjamin Schweizer stworzył przydatny edytor w Pythonie, który działa dobrze. Weź go ze strony http://benjamin-schweizer.de/htpasswd_editor.html i zainstaluj jego zależność:

sudo apt-get install python-newt

Wygeneruj plik w formacie htpasswd za pomocą narzędzia - sudo python htpasswd_editor sudo.passwd. Wprowadź nazwę użytkownika i hasło, używając tej samej nazwy użytkownika, której będziesz używać w sudo - po jednym dla każdego użytkownika, który będzie go używał. Skopiuj go w bezpieczne miejsce (podczas testowania umieszczam go w /etc/sudo.passwd) i uniemożliwiam jego odczytanie zwykłym użytkownikom: chmod 660 /etc/sudo.passwdjako root.

Upewnij się, że plik jest własnością root i jest nieczytelny dla innych użytkowników. Jest to usterka, ponieważ plik zawiera zaszyfrowane hasło, a jeśli jest czytelny lub zapisywalny dla innych użytkowników, poważnie narusza twoje bezpieczeństwo. Z tego powodu nie polecam tej metody na komputerze, który musi być bezpieczny.

Na koniec edytuj /etc/pam.d/sudoplik. Dodaj następujący wiersz powyżej innych @include ...wierszy:

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

Oczywiście zastępując ostatni argument ścieżką do wygenerowanego pliku htpasswd. Skomentuj następny wiersz: #@include common-authaby upewnić się, że używa nowej metody uwierzytelniania.

Uwaga: musisz edytować /etc/pam.d/sudoplik z terminala głównego. Nie zamykaj tego bez testowania! Jeśli to zrobisz, możesz nie być w stanie zalogować się ponownie (jeśli coś zepsułeś) i będziesz musiał uruchomić komputer z dysku odzyskiwania, aby naprawić system. Przetestuj przed wylogowaniem, otwierając nowy terminal i spróbuj użyć sudo. Powinieneś przekonać się, że nie będzie już działać z Twoim zwykłym hasłem logowania, ale zamiast tego wymaga nowego hasła, którego użyłeś podczas generowania pliku passwd. Aby zaktualizować plik, użyj ponownie przydatnego narzędzia.

Aaron D.
źródło
muszę uruchomić w Ubuntu, czy jest jakiś inny sposób
Varun Sridharan
Zaktualizowałem odpowiedź - przetestowałem tę metodę i robi to, co chcesz, jeśli poprawnie zrozumiałem twoje pytanie. Proszę spróbować
Aaron D
1
+50 nagród. @AaronD Twoja odpowiedź rozwiązała moje pytanie . Dzięki!!!
Robbie Wxyz,
Cieszę się, że okaże się przydatny!
Aaron D
1

Jest o wiele prostsze rozwiązanie pierwotnego pytania i sposób, w jaki działam:

  • utwórz jednego użytkownika niebędącego administratorem
  • utwórz użytkownika administratora

Zawsze loguj się jako użytkownik niebędący administratorem i za każdym razem, gdy użytkownik nie będący administratorem musi zrobić coś „adminy”, po prostu:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

Tak, to nie jest to, czego chcesz, ale tak naprawdę potrzebujesz

Fabby
źródło