Ci-dessous est une image du processus que j'ai suivi pour créer un utilisateur sur bash sous Linux.
Je comprends que le mot de passe ne doit pas être affiché à des fins de sécurité, mais ce que je veux dire, c'est pourquoi les astérisques (ou les caractères que j'ai saisis) n'apparaissent pas?
Parce que c'est ainsi que nous faisons les choses dans * nix land. :) Cela donne un peu de sécurité supplémentaire en n'affichant pas un tas d'astérisques. De cette façon, quelqu'un qui voit votre écran ne peut pas voir la longueur de votre mot de passe.
Mais je dois admettre que c'est un peu effrayant de ne pas recevoir de commentaires lorsque vous entrez un mot de passe, surtout si vous avez un mauvais clavier. Ainsi, la plupart des boîtes de dialogue de mot de passe GUI sur les systèmes * nix vous donnent une sorte de rétroaction, par exemple en utilisant des astérisques, ou plus couramment ⬤. Et certains affichent même chaque caractère au fur et à mesure que vous le tapez, mais le remplacent immédiatement par un *
ou ⬤, mais ce n'est pas si bon si quelqu'un regarde par-dessus votre épaule. Ou s'ils ont un appareil qui peut capter et décoder le signal vidéo envoyé de votre ordinateur vers votre moniteur.
Quelle est la manière la plus simple de masquer les entrées utilisateur?
Ne pas l'afficher!
Masquer les mots de passe lorsqu'ils sont saisis est une vieille tradition. Cela a du sens du point de vue de la sécurité dans la plupart des contextes: si quelqu'un regarde par-dessus vos épaules, vous ne voulez pas qu'il soit facile de voir ce que vous tapez. (Certaines directives de sécurité modernes, par exemple 1245 recommandent d'avoir un option pour rendre le mot de passe visible, car cela permet à l'utilisateur de choisir des mots de passe plus complexes et d'avoir la certitude qu'il ne passera pas son temps à réparer les fautes de frappe invisibles. , éventuellement hors ligne.)
Ayant décidé que le mot de passe devait être caché, les implémenteurs ont dû décider comment le faire. Le terminal a un mode où l'entrée utilisateur est affichée (écho activé) et un mode où l'entrée utilisateur n'est pas affichée (écho désactivé). Le mode d'écho désactivé a une existence intrinsèque d'une certaine manière: c'est le mode où le terminal ne fait pas le travail supplémentaire d'écho des entrées utilisateur. Ce mode doit également exister pour les applications où la saisie d'une clé n'insère pas ce caractère, mais appelle à la place un raccourci d'application lié à cette clé. Ainsi, des commandes comme passwd
mettent simplement le terminal en mode d'écho pendant qu'il lit un mot de passe.
L'impression d'astérisques pour chaque caractère nécessiterait un travail d'implémentation supplémentaire pour un avantage relativement faible, ce que les implémenteurs de la commande passwd
n'ont pas eu envie de faire. Il n'y a pas de mode terminal pour imprimer des astérisques car ce serait une fonctionnalité très spécialisée, utile uniquement lors de la saisie de mots de passe.
Par ailleurs, si vous souhaitez voir votre mot de passe lorsque vous le changez, vous pouvez utiliser cat | passwd
(au moins sur certains systèmes - certaines versions de passwd
nécessitent une option comme cat | passwd --stdin
et certains ne l'acceptent pas du tout). (Vous pouvez même faire { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
, mais ne faites pas cela: cela sauverait les mots de passe dans l'historique du shell, d'où il y a beaucoup plus de risques de fuite.) Arranger pour cela avec des commandes qui lisent le mot de passe depuis le terminal plutôt que quelle que soit leur entrée standard , comme Sudo
ou ssh
, est plus complexe; si vous disposez d'une interface graphique, vous pouvez utiliser ssh-askpass qui indique le nombre de caractères que vous avez saisis (Sudo_ASKPASS=/usr/bin/ssh-askpass Sudo -A
pour Sudo; pour ssh c'est compliqué quand on l'invoque depuis un terminal).
Rendre le mot de passe invisible le rend plus sûr, car la longueur du mot de passe ne peut pas être vue par d'autres. Cela évite le risque que d'autres tentent de deviner le mot de passe à partir de sa longueur et se connectent à votre compte.