Нижче наведено зображення процесу, який я взяв для створення користувача на bash в Linux.
Я розумію, що пароль не повинен відображатися з метою безпеки, але що я маю на увазі, чому зірочки (або символи, які я ввів) не з’являються?
Нижче наведено зображення процесу, який я взяв для створення користувача на bash в Linux.
Я розумію, що пароль не повинен відображатися з метою безпеки, але що я маю на увазі, чому зірочки (або символи, які я ввів) не з’являються?
Відповіді:
Тому що так ми робимо речі в * nix land. :) Це дає трохи додаткової безпеки, не показуючи купу зірочок. Таким чином, хтось, хто бачить ваш екран, не може бачити довжину вашого пароля.
Але мушу визнати, що при введенні пароля трохи страшно не отримувати відгуків, особливо якщо у вас погана клавіатура. Тож більшість діалогових вікон із паролем графічного інтерфейсу у * nix системах дають вам певний зворотній зв'язок, наприклад, за допомогою зірочок або, звичайно, ⬤. А деякі навіть відображають кожного персонажа під час його введення, але потім негайно замініть його на *
або ⬤, але це не так добре, якщо хтось може дивитись через ваше плече. Або якщо у них є пристрій, який може приймати та декодувати відеосигнал, що надсилається з комп'ютера на монітор.
stty -echo
Який найпростіший спосіб приховати введення користувача?
Не показувати його!
Сховати паролі під час їх введення - давня традиція. Це має сенс з точки зору безпеки в більшості контекстів: якщо хтось дивиться через ваші плечі, ви не хочете, щоб було легко зрозуміти, що ви вводите. (Деякі сучасні вказівки щодо безпеки, наприклад, 1 2 3 4 5 дійсно рекомендують мати можливість зробити пароль видимим, оскільки це дозволяє користувачеві мати можливість вибирати більш складні паролі та впевнені, що вони не витратять час на виправлення невидимого друкарські помилки. Найбільший ризик - це не серфінг на плечах, це груба вгадка, можливо, офлайн.)
Вирішивши, що пароль слід приховати, виконавцям довелося вирішити, як це зробити. У терміналі є режим, у якому відображається введення користувача (ехо ввімкнено), і режим, коли введення користувача не відображається (ехо вимкнено). Режим ехо-вимкнення має певне власне існування: це режим, коли термінал не виконує зайвої роботи з відображенням вводу користувача. Цей режим також повинен існувати для програм, де введення ключа не вставляє цей символ, а натомість викликає деякий ярлик програми, який пов'язаний з цією клавішею. Таким чином, такі команди, як passwd
просто встановити термінал, щоб перегукуватися з режимом, поки вони читають пароль.
Друк зірочок для кожного символу потребував би додаткових робіт з впровадження лише відносно невеликої користі, чого виконавці passwd
команди не відчували, як це роблять. Для друку зірочок немає термінального режиму, оскільки це була б дуже спеціалізована функція, корисна лише під час введення паролів.
До речі, якщо ви хочете побачити свій пароль при зміні його, ви можете використовувати cat | passwd
(принаймні, в деяких системах - деякі версії passwd
вимагають такої опції, як cat | passwd --stdin
деякі, а деякі взагалі не приймають цього). (Можна навіть робити { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
, але не робити цього: це збереже паролі в історії оболонки, з якої існує набагато більший ризик витоку). їх стандартний вклад, такий як sudo
або ssh
, є більш складним; якщо у вас є графічний інтерфейс, ви можете використовувати ssh-askpass, який показує, скільки символів ви ввели ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
для sudo; для ssh це складно, коли ви викликаєте його з терміналу).
Зробити пароль невидимим робить його більш безпечним, оскільки довжину пароля не можуть бачити інші. Це дозволяє уникнути ризику, коли інші намагаються відгадати пароль за його довжиною та увійти у свій обліковий запис.