Poniżej znajduje się obraz procesu, który podjąłem, aby utworzyć użytkownika na bash w Linuksie.
Rozumiem, że hasło nie powinno być wyświetlane ze względów bezpieczeństwa, ale mam na myśli to, dlaczego gwiazdki (lub znaki, które wprowadziłem) nie pojawiają się?
command-line
terminal
password
passwd
Kaiylar
źródło
źródło
Odpowiedzi:
Ponieważ tak robimy rzeczy w * nix land. :) Daje to trochę dodatkowego bezpieczeństwa, nie wyświetlając kilku gwiazdek. W ten sposób osoba, która zobaczy Twój ekran, nie zobaczy długości Twojego hasła.
Ale muszę przyznać, że trochę przerażające jest, że nie dostajesz żadnych informacji zwrotnych podczas wprowadzania hasła, szczególnie jeśli masz złą klawiaturę. Dlatego większość okien dialogowych z hasłem GUI w systemach * nix daje ci jakieś informacje zwrotne, np. Używając gwiazdek lub częściej ⬤. A niektóre nawet wyświetlają każdą postać podczas pisania, ale natychmiast zastępują ją znakiem
*
lub ⬤, ale to nie jest tak dobre, jeśli ktoś może patrzeć przez ramię. Lub jeśli mają urządzenie, które może odbierać i dekodować sygnał wideo wysyłany z komputera na monitor.źródło
stty -echo
Jaki jest najprostszy sposób ukrywania danych wejściowych użytkownika?
Nie wyświetlam tego!
Ukrywanie haseł podczas ich wpisywania to stara tradycja. Ma to sens z punktu widzenia bezpieczeństwa w większości kontekstów: jeśli ktoś patrzy na twoje ramiona, nie chcesz, aby łatwo było zobaczyć, co piszesz. (Niektóre współczesne wytyczne bezpieczeństwa, np. 1 2 3 4 5 , zalecają jednak opcję wyświetlania hasła, ponieważ pozwala to użytkownikowi wybrać bardziej złożone hasła i mieć pewność, że nie spędzą czasu na naprawianiu go niewidocznym literówki. Największym ryzykiem nie jest surfowanie po ramionach, to zgadywanie z użyciem siły, prawdopodobnie offline.)
Zdecydowawszy, że hasło powinno być ukryte, realizatorzy musieli zdecydować, jak to zrobić. Terminal ma tryb, w którym wejście użytkownika jest pokazywane (echo włączone) oraz tryb, w którym wejście użytkownika nie jest pokazywane (echo wyłączone). Tryb wyłączania echa istnieje w pewien sposób: jest to tryb, w którym terminal nie wykonuje dodatkowej pracy polegającej na echu danych wprowadzanych przez użytkownika. Ten tryb musi istnieć również w aplikacjach, w których wpisanie klawisza nie wstawia tego znaku, ale wywołuje skrót aplikacji powiązany z tym klawiszem. Polecenia takie jak
passwd
po prostu ustaw terminal na tryb wyłączania echa podczas odczytywania hasła.Drukowanie gwiazdek dla każdej postaci wymagałoby dodatkowej pracy wdrożeniowej przy niewielkiej korzyści, czego realizatorzy
passwd
komendy nie mieli ochoty robić. Nie ma trybu terminalu do drukowania gwiazdek, ponieważ byłaby to bardzo wyspecjalizowana funkcja, przydatna tylko podczas wprowadzania haseł.Nawiasem mówiąc, jeśli chcesz zobaczyć hasło podczas jego zmiany, możesz użyć
cat | passwd
(przynajmniej w niektórych systemach - niektóre wersjepasswd
wymagają opcji podobnej,cat | passwd --stdin
a niektóre w ogóle tego nie akceptują). (Możesz nawet to zrobić{ echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
, ale nie rób tego: zapisałoby to hasła w historii powłoki, z których wiąże się o wiele większe ryzyko wycieku.) Zapewnienie tego za pomocą poleceń, które czytają hasło z terminala, a nie cokolwiek ich standardowe dane wejściowe, takie jaksudo
lubssh
, są bardziej złożone; jeśli masz GUI, możesz użyć ssh-askpass, który pokazuje, ile znaków wpisałeś (SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
dla sudo; dla ssh jest to skomplikowane, gdy wywołujesz je z terminala).źródło
Niewidoczne hasło sprawia, że jest ono bezpieczniejsze, ponieważ inni nie mogą zobaczyć długości hasła. Pozwala to uniknąć ryzyka, że inni spróbują odgadnąć hasło na podstawie jego długości i zalogować się na konto.
źródło