Script shell Linux pour basculer l'utilisateur et afficher les informations requises en arrière-plan vers le script
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 su
et 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
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