web-dev-qa-db-fra.com

Est-il possible de passer des mots de passe sur un script shell?

Cela fait longtemps que je cherche cela, j'aimerais savoir s'il est possible de passer des mots de passe dans un script Shell? Beaucoup de réponses sont retournées sans. Récemment, j'ai lu un article expliquant comment passer des mots de passe dans un script Shell. J'ai essayé cela, mais cela ne semble pas fonctionner. C'est le lien . Quelqu'un peut-il passer la commande et revenir en arrière? Aussi, merci de me dire qu'il y a un moyen de passer les mots de passe dans un script shell? Si aucun pls ne me dit comment Linux obtient l'entrée pour le mot de passe?

11
karthick87

Par "entrer des mots de passe", vous entendez probablement entrer des données sans être visibles pour l'utilisateur.

(suggéré par geirha) Lorsque vous utilisez bash, vous pouvez utiliser l'option -s pour empêcher l'affichage des caractères saisis:

read -p "Password please: " -s pass

Sinon, modifiez le comportement du terminal pour masquer les caractères saisis avec stty -echo (désactivez echoname__). Après avoir lu le mot de passe avec le readdu shell intégré dans une variable (dans l'exemple ci-dessous, $pass), réactivez-le avec stty echo. Parce que la nouvelle ligne de Enter est caché, vous devez imprimer une nouvelle ligne pour obtenir les sorties futures sur une nouvelle ligne.

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

readet printfsont intégrés au shell. sttyest fourni par le package coreutilsqui est installé par défaut. Cela signifie que cet extrait est très portable.

Remarque: l'option -p n'est pas standard, mais à partir de bashname__. Si vous devez afficher une invite dans d'autres shells, utilisez:

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

Références:

11
Lekensteyn

A quel programme voulez-vous passer un mot de passe?

Le script sur le lien fonctionne pour moi. Notez qu’il ne s’agit pas d’un script Shell, mais d’un script attendu (le paquetage expectdoit être installé). Utiliser expect est un moyen courant d'automatiser les programmes interactifs basés sur du texte.

Les connexions sshnon interactives sont souvent effectuées à l'aide d'une authentification basée sur une clé avec une phrase secrète vide.

Certains autres programmes (comme Sudoname__) ont la possibilité de lire un mot de passe à partir de stdin.

Fournir un mot de passe en tant qu'option de ligne de commande est souvent un problème de sécurité car sur la plupart des systèmes, tout utilisateur peut voir tous les processus d'autres utilisateurs, y compris leurs arguments de ligne de commande, à l'aide d'outils simples tels que psname__.

2
Florian Diesch

Un script ne devrait jamais vraiment gérer les mots de passe. Demandez à l’application qui a besoin du mot de passe de le demander elle-même ou, si ce n’est pas possible, trouvez un meilleur moyen de s’authentifier avec l’application. Veuillez lire http://mywiki.wooledge.org/BashFAQ/069

1
geirha

Il existe un moyen de stocker les mots de passe dans un script bash, mais vous devez le chiffrer pour que personne ne puisse le lire, ni exécuter aucun type de débogueur dessus pour voir exactement ce qu'il fait. Pour chiffrer un script bash/Shell et le rendre exécutable, essayez de le copier-coller ici

Sur la page ci-dessus, tout ce que vous avez à faire est de soumettre votre script (vous pouvez d’abord envoyer un exemple de script pour votre tranquillité d’esprit). Un fichier Zip sera généré pour vous. Cliquez avec le bouton droit sur le lien de téléchargement et copiez l'URL fournie. Accédez ensuite à votre zone UNIX et procédez comme suit.

Installation:

   wget link-to-the-Zip-file
   unzip the-newly-downloaded-Zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

Voici ce que la commande d'installation ci-dessus fera pour vous:

  1. Il va installer le script chiffré dans le répertoire /var/tmp/KINGLAZY/SHIELDX-(your-script-name).

  2. Un lien vers ce script chiffré sera placé dans le répertoire spécifié en remplacement de /home/(your-username). De cette manière, il vous permettra d'accéder facilement au script sans avoir à taper le chemin absolu.

  3. S'assure que PERSONNE ne peut modifier le script - Toute tentative de modification du script crypté le rend inutilisable ... jusqu'à ce que ces tentatives soient arrêtées ou supprimées.

  4. Assure absolument que personne ne peut en faire des copies. Personne ne peut copier votre script dans un endroit isolé et essayer de le visionner pour voir comment il fonctionne. Toutes les copies du script doivent être des liens vers l'emplacement d'origine que vous avez spécifié lors de l'installation.

REMARQUE:

Je ne crois pas que cela fonctionne pour des scripts interactifs qui invitent l'utilisateur à répondre. Les valeurs doivent être codées en dur dans le script. Le cryptage garantit que personne ne peut réellement voir ces valeurs, vous n'avez donc pas à vous en préoccuper.

0