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.
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:
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.
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:
sudo usermod -d /path/to/new/home
Odpowiedzi:
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.
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ść:
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.passwd
jako 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/sudo
plik. Dodaj następujący wiersz powyżej innych@include ...
wierszy:Oczywiście zastępując ostatni argument ścieżką do wygenerowanego pliku htpasswd. Skomentuj następny wiersz:
#@include common-auth
aby upewnić się, że używa nowej metody uwierzytelniania.Uwaga: musisz edytować
/etc/pam.d/sudo
plik 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.źródło
Jest o wiele prostsze rozwiązanie pierwotnego pytania i sposób, w jaki działam:
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:
Tak, to nie jest to, czego chcesz, ale tak naprawdę potrzebujesz
źródło