Zmień hasło programowo


12

W obecnej wersji Raspian wiem, że można zmienić hasło aktualnie zalogowanego użytkownika z wiersza poleceń w następujący sposób:

sudo passwd

co spowoduje wyświetlenie monitu o dwukrotne wprowadzenie nowego hasła. Spowoduje to wytworzenie danych wyjściowych w następujący sposób:

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Zastanawiałem się, czy istnieje możliwość programowej zmiany hasła, na przykład ze skryptu powłoki.

Próbuję utworzyć skrypt konfiguracyjny do wdrożenia na moim Raspberry Pis i nie chcę ręcznie wpisywać dla nich nowych haseł.


1
Aby zmienić hasło bieżącego użytkownika, nie musisz używać prefiksu sudo. Jeśli go użyjesz sudo, możesz wymusić nowe hasło dla dowolnego użytkownika bez konieczności znajomości aktualnego hasła tego użytkownika.
— roaima,

expect(1)może również pomóc.
— SailorCire,

Pamiętaj, aby wziąć pod uwagę wpływ na bezpieczeństwo przy programowej zmianie haseł.
— Josh Habdas

Odpowiedzi:


19

Szukasz chpasswdpolecenia. Zrobiłbyś coś takiego:

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

Pamiętaj, że należy go uruchomić jako root, przynajmniej z domyślną konfiguracją PAM. Ale prawdopodobnie uruchamiany jako root nie stanowi problemu dla skryptu wdrażania systemu.

Ponadto możesz wykonywać wielu użytkowników jednocześnie, zasilając je wieloma wierszami danych wejściowych.


9

Inną alternatywą jest użycie yespolecenia w skrypcie.

yes newpassword | passwd youruser

Spowoduje to wysłanie newpassworddo passwdpolecenia dla youruser.

Należy wspomnieć, że ustawianie / modyfikowanie haseł użytkowników za pomocą skryptów może stanowić zagrożenie bezpieczeństwa i należy tego unikać, gdy tylko jest to możliwe.

EDYTOWAĆ:

Ta odpowiedź wymaga dostępu do konta root. Przepraszamy za wcześniejsze wzmianki o tym. Jest to metoda, której używam podczas wykonywania zadań administracyjnych wymagających dostępu do konta root.


Próbowałeś tego?
— roaima,

Tak. Z tej metody korzystam od lat. Przetestowałem to przed opublikowaniem mojej odpowiedzi i jeszcze teraz.
— Timothy Martin,

Nawet zakładając, że passwdczyta się z stdinterminala, a nie z terminala (klawiatury), jak to może działać, gdy passwdnajpierw monituje o stare hasło użytkownika, a następnie monituje o nowe?
— roaima,

@roaima prawdopodobnie Timothy uruchamia go jako root (co wyjaśniałoby, dlaczego potrzebuje youruserna końcu). Może gdzieś zadziała ...
— derobert

1
@roaima passwdPolecenie z narzędzi cień Linuksa przyjmuje przekierowane dane wejściowe (w przeciwieństwie do np. OpenSSH ssh). Używanie yesnie jest jednak dobrym pomysłem: ujawnia hasło szpiegom, którzy patrzą na listę procesów w niewłaściwym czasie. Użycie echonie miałoby tej wady, ponieważ jest to wbudowana powłoka.
— Gilles „SO- przestań być zły”
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.