Muszę ręcznie edytować, /etc/shadow
aby zmienić hasło roota w obrazie maszyny wirtualnej.
Czy istnieje narzędzie wiersza polecenia, które pobiera hasło i generuje /etc/shadow
zgodny skrót hasła przy standardowym wyjściu?
Do tego samego możesz użyć następujących poleceń:
openssl passwd -6 -salt xyz yourpass
Uwaga: przekazanie -1
wygeneruje hasło MD5, -5
SHA256 i -6
SHA512 (zalecane)
mkpasswd --method=SHA-512 --stdin
Metody przyjmuje md5
, sha-256
isha-512
Zgodnie z sugestią @tink możemy zaktualizować hasło za chpasswd
pomocą:
echo "username:password" | chpasswd
Lub możesz użyć zaszyfrowanego hasła za pomocą chpasswd
. Najpierw wygeneruj za pomocą:
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
Następnie możesz użyć wygenerowanego hasła do aktualizacji:
echo "username:encryptedPassWd" | chpasswd -e
To zaszyfrowane hasło możemy wykorzystać do utworzenia nowego użytkownika z hasłem, na przykład:
useradd -p 'encryptedPassWd' username
chpasswd -e
pamiętaj, aby używać pojedynczych cudzysłowów w ciąguecho
; w przeciwnym razie, jeśli istnieją$
lub inne znaki specjalne, nie zostaną potraktowane dosłownie.openssl passwd -1
które 1) tam się nie kończy, a 2) generuje dla ciebie losową sól (która również nie trafia do historii muszli).openssl passwd
dokumentacja dla każdego, kto próbuje dowiedzieć się, co-1
robi opcja.python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- z powiązanego pytaniaW Ubuntu 12.04 jest mkpasswd (z pakietu whois): Nadmierny interfejs użytkownika do crypt (3)
Gdzie:
-m
= Oblicz hasło przy użyciu metody TYPE. Jeśli TYPE jest pomocne, drukowane są dostępne metody.-S
= użyta sól.Na przykład
źródło
To rozwiązanie ma następujące zalety:
Ponownie wyświetla monit o podanie hasła, aby uniknąć błędów.
Bibliografia
źródło
Dla osób bez systemów opartych na Debianie. Python3 działa równie dobrze.
UWAGA: Ciąg „test” to hasło, które generujemy jako zaszyfrowany ciąg.
źródło
crypt.mksalt
nie działa podczas generowania haseł/etc/shadow
. Ale metoda @ Alex131089 działa!openssl
jest dość uniwersalnym narzędziem.Żadna z obecnych metod nie jest dla mnie do zaakceptowania - albo przekazują hasło w wierszu poleceń (co kończy się w historii mojej powłoki), wymagają instalacji dodatkowych narzędzi (
python3
,makepasswd
), używają zakodowanych soli lub starych technik mieszania.Ta metoda generowałaby skróty SHA-512 po wyświetleniu zapytania o hasło i używałaby losowej soli.
Metoda wykorzystująca Python 2 bez żadnych niestandardowych bibliotek:
Aby to zrobić bez pytania: (Zostawi to twoje hasło w historii poleceń)
źródło
ps
ułamku sekundy nadal działałoby. (Najbezpieczniejsze pozostaje użycie wersji, która wymaga podania hasła)I
openssl
ichpasswd -e
para nie działały w moim przypadku w RHEL6. Łączenieopenssl passwd
iusermod -p
dowodzenie wykonało pracę.Wygeneruj wartość skrótu hasła wraz z wartością soli:
Następnie skopiuj zaszyfrowany ciąg do usermod. Pamiętaj, aby owinąć go pojedynczymi cudzysłowami.
Sprawdź to w pliku cienia.
źródło
Jeszcze inną metodą generowania haseł jest użycie tego
openssl
narzędzia.Wygeneruj hasła MD5
Wygeneruj hasła DES
źródło
Rozwijając nieco krytykę u150825 i Gert van den Berg, odkryłem, że potrzebuję czegoś stosunkowo elastycznego w różnych sytuacjach z różnymi systemami automatyki. Postanowiłem dodać do mojej małej biblioteki przydatnych skryptów i napisać to. Używa tylko rodzimych bibliotek z Python 2.7+ i działa równie dobrze na Python3.
Możesz go tutaj odebrać, jeśli chcesz. Równie łatwo jest upuścić to w swoim środowisku, jeśli potrzebujesz go często używać, hostowanego HTTP lub cokolwiek innego, i możesz uruchomić go na dowolnej platformie, używając dowolnego domyślnego interpretera Pythona, jaki masz, całkiem ładny niezawodnie liczę na to, że zadziała.
Domyślnie monituje za pomocą getpass z monitami na stderr (umożliwiając łatwe przechwytywanie standardowego wyjścia), ale jeśli podłączysz do niego łańcuch, zacznie on zbierać ze standardowego wejścia. W zależności od tego, jak sobie z tym poradzisz, może również nie pojawiać się w historii poleceń, więc bądź świadomy tego, nad czym pracujesz. Lubię mieć elastyczne narzędzie, które będzie się zachowywało w oczekiwany sposób, zamiast polegać na pakietach lub pytaniu w jednej linii na drodze do zwycięstwa na 10 różnych sposobów.
źródło
chpasswd
?