Quand je veux demander un mot de passe dans un bash
script, je fais ça:
read -s
... mais quand je cours bash
en mode POSIX, avec sh
, l' -s
option est rejetée:
$ read -s
sh: 1: read: Illegal option -s
Comment demander en toute sécurité une entrée avec une commande compatible POSIX?
Réponses:
Notez que pour les shells (mksh) qui
printf
ne sont pas intégrés, le mot de passe apparaîtra en clair dans laps
sortie (pendant quelques microsecondes) ou peut apparaître dans certains journaux d'audit si toutes les invocations de commandes avec leurs paramètres sont auditées.la source
cat
+ heredoc être une alternative plus sûre à laprintf
?REPLY="$(...)"
ne nuisent pas (sauf pour la mise en évidence de la syntaxe SE) mais ne sont pas nécessairesstty
paramètres.read -s
n'est pas dans POSIX. Si vous voulez être conforme à POSIX, utilisez lestty -echo
.stty
et sesecho
paramètres sont définis dans POSIX.Cela fonctionnera sur tous les shells conformes à POSIX.
La source
la source
stty echo
- au cas où l'utilisateur serait confus et frapperait control-C pendant laread PASSWORD
section .