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.
sudo usermod -d /path/to/new/home
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.
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.
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.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:
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-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.
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:
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