Script shell Linux pour basculer l'utilisateur et afficher les informations requises en arrière-plan vers le script

Nov 20 2020

J'ai besoin d'un exemple de script shell Linux pour le scénario ci-dessous:

Pendant la session interactive:

su user1
Password: <Type password>

Ce que je vais faire, c'est enregistrer le mot de passe dans un fichier (par exemple:) ~/pwd.txt. J'ai besoin d'un script shell tel que lorsque nous exécutons ce script, le mot de passe de l'utilisateur cible sera lu à partir du fichier et transmis automatiquement suet je passerai ensuite à l'utilisateur cible. Il n'est pas nécessaire d'afficher l'invite, ce serait bien si tout était traité en arrière-plan et que je voyais simplement le passage au nouvel utilisateur directement).

Veuillez aider!

Merci!

Réponses

RedaSalih Nov 20 2020 at 22:56

Il n'est pas sécurisé de stocker votre mot de passe brut dans un fichier; mais au moins ce sera une réponse à votre question.

Utilisation de NOPASSWD dans les sudoers

Ajoutez l'entrée ci-dessous à vos sudoers:

<your_user> ALL=NOPASSWD: /bin/su - user1
#Then simply run
sudo -S su - user1

Sans sudoers : utile pour les shells non interactifs

su - user1 -c ""  < ~/pwd.txt &>/dev/null

< ~/pwd.txt Redirigez votre mot de passe stocké dans ~ / pwd.txt vers la commande su.

&>/dev/null Redirigez à la fois stdout et sterr vers> / dev / null.

## MIEUX ## :

Vous pouvez utiliser l' outil gpg pour crypter votre mot de passe:

    # Encrypt your password with choosing a passphrase :
    gpg -c ~/pwd.txt 
    # Remove your raw password file :
    rm -f ~/pwd.txt.gpg

Maintenant, lorsque vous essayez de su, utilisez ce qui précède pour déchiffrer votre mot de passe :

su - user1 -c ""  <<< "$(gpg -q -d ~/pwd.txt.gpg 2>/dev/null)" &>/dev/null