Jak ustawić hasła użytkownika za pomocą hasła bez pytania?

21

Piszę skrypt, aby dodać dużą liczbę użytkowników do systemu. Częścią tego jest ustawienie domyślnych haseł dla każdego użytkownika. Jak ustawić hasła użytkowników bez wyświetlania monitu o podanie hasła?

Niestety, passwd nie wydaje się argumentować, że należy ustawić nowe hasło. Używam Ubuntu 11.10.

Jake Petroules
źródło

Odpowiedzi:

22

Wypróbuj usermod:

usermod --password PASSWORD USERNAME

Jedyne, co to wymaga, to wstępnie zaszyfrowany ciąg hasła, który musiałbyś najpierw wygenerować.

Cez
źródło
1
... które mogę wygenerować za pomocą mkpasswd. Wspaniale, dziękuje!
Jake Petroules,
16
Możesz także użyć openssl do wygenerowania zaszyfrowanego hasła. Na przykład:usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
Eric Smith
1
Trzy lata za późno. Nie mogłem udzielić odpowiedzi @EricSmith, ale odkryłem prostszą wersję polecenia, która działała:usermod --password $(openssl passwd -1 {password}) {username}
BoCoKeith
13

Powinieneś spojrzeć na chpasswdkomendę (jeśli jest dostępna w twoim smaku Linuksa):

echo 'userid:newpasswd' | chpasswd

Możesz też ustawić identyfikator użytkownika na liście plików: passwd dla każdego konta w osobnym wierszu.

Otóż ​​to.

Allan
źródło
to zadziałało dla mnie wDockerfile
Vishrant
1

Zainspirowany pomysłem Erica Smitha połączenie openssl passwdi usermod -pdowodzenie zadziałało. Wygeneruj zaszyfrowaną wartość hasła wraz z wartością soli.

$ openssl passwd -1  -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.

Następnie skopiuj zaszyfrowany ciąg do usermod. Pamiętaj, aby owinąć go pojedynczym cytatem.

$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root

Sprawdź to w pliku cienia.

$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::
Joon Byun
źródło
0

Powinieneś użyć starzenia się hasła i ustawić użytkowników tak, aby musieli zmienić swoje hasło przy pierwszym logowaniu. Zobacz ten artykuł .

waltinator
źródło
To miały być tylko konta FTP, ale dobra rada. ;)
Jake Petroules,
0
(echo user; echo password) | passwd

działa dla mnie zarówno w fizycznym hoście, jak i kontenerze, dla różnych systemów operacyjnych (ubuntu xenial, bionic, debian9,10, centos75,76, coreos)

echo user:password | chpasswd

działa dla niektórych systemów operacyjnych, ale niektóre systemy operacyjne, takie jak debian9,10, pokażą błąd, can not connect to /var/run/nscd/socketponieważ używają /etc/nsswitch.conf do ustalenia, gdzie przechowuje hasło.

osexp2003
źródło