Comprendre pourquoi le terminal ne vous permet pas de taper un mot de passe

Parfois, vous devez entrer un mot de passe dans le terminal, généralement pour les commandes sudo ou su, ce qui permet aux utilisateurs d'exécuter une commande avec des privilèges de super utilisateur. C'est assez typique pour permettre l'accès à lire ou modifier quelque chose qui ne serait pas possible autrement avec un compte d'utilisateur standard. Vous verrez souvent sudo préfixer une autre commande, ressemblant à "sudo nano / etc / hosts". Bien que la plupart de la ligne de commande et du sudo ne conviennent généralement qu'aux utilisateurs expérimentés, il peut arriver que des utilisateurs occasionnels se tournent vers le terminal, peut-être pour activer une fonctionnalité, modifier un fichier système ou même pour résoudre un problème. Pour les utilisateurs novices qui se retrouvent en ligne de commande, une question très courante se pose: entrer des mots de passe dans le Terminal, presque toujours liés à sudo et l'incapacité apparente de taper un mot de passe dans la ligne de commande d'OS X (ou Linux) .


Mais voici la chose; Terminal vous permet de taper votre mot de passe, il ne ressemble pas à ça . Le curseur sur l'écran ne bouge pas, et il n'y a aucun indicateur indiquant que le mot de passe est entré. Ceci est intentionnel et sert de mécanisme de sécurité, contrairement à la saisie d'un mot de passe dans un formulaire Web ou un écran de connexion GUI standard, qui est généralement masqué comme des astérisques comme ******** ou des puces comme ••••••• ••••••, l'absence de tout affichage est entièrement intentionnelle et il n'y a pas d'indication de saisie de mots de passe sur la ligne de commande. La raison est plutôt simple, elle ne donne aucune indication sur la durée de validité d'un mot de passe, ce qui complique encore plus la saisie du mot de passe.

Si cela semble confus, ce n'est pas du tout, voici comment cela fonctionne en pratique. Supposons que vous exécutiez une commande nécessitant un accès sudo, ce qui vous permet d'accéder à l'entrée habituelle "Mot de passe:".

% sudo cat /etc/secret.conf
Password:

Lorsque la requête Mot de passe: apparaît, tapez quand même le mot de passe, même si rien ne s'affiche, puis appuyez sur Retour lorsque vous avez terminé. Encore une fois, il n'y a aucune indication qu'un mot de passe est entré, et c'est intentionnel.

Alors, répétons l'exemple de commande précédent, prétendant que le mot de passe de l'administrateur sur cette machine est "Monkey123", vous devrez taper ce mot de passe tel qu'il est demandé, même s'il ne s'affichera pas, ce qui signifie:

% sudo cat /etc/secret.conf
Password: Monkey123 (hit Return key)

Cela va exécuter la commande. Et non, Monkey123 (ou quel que soit le mot de passe de l'administrateur) n'apparaîtra pas à l'écran, pas plus que les astérisques ou les puces.

Habituellement, un utilisateur ne doit en faire l'expérience qu'une ou deux fois pour comprendre comment cela fonctionne, mais cela reste une excellente question pour les utilisateurs qui commencent tout juste à se familiariser avec la ligne de commande. Et une fois que vous le savez, vous pouvez transmettre la connaissance aux autres, donc si quelqu'un vous demande "pourquoi le Terminal ne me laisse pas taper un mot de passe?", Vous pouvez maintenant leur répondre et leur expliquer.

Pour ceux qui se demandent, oui ce comportement par défaut peut être changé pour montrer des astérisques pour chaque caractère entré comme mot de passe dans la ligne de commande, pour sudo, su, ou tout ce que vous faites. Néanmoins, faire ce changement n'est pas recommandé, et nous n'allons pas le couvrir dans cet article particulier ... peut-être à l'avenir s'il y a un intérêt à le faire.