su passer le mot de passe de script
Je suis en train d'écrire un script qui va exécuter les commandes suivantes:
sudo su
runmqsc_result=`su -c "runmqsc QMGR < /home/rob/query_queue.txt" -m "mqm"`
Ma question toutefois, est que ces commandes sont exécutées dans le cadre d'un script shell, par l'utilisateur qui est dans le fichier sudoers. Cependant, bien évidemment sudo su demande le mot de passe de l'utilisateur en cours d'exécution.
Ce que je dois faire est de passer le mot de passe sudo su, de sorte que le script sera exécuté automatiquement. Comment puis-je faire cela?
p.s: je ne peux pas modifier les autorisations pour la course "runmqsc"...il doit être exécuté en tant qu'utilisateur mqm qui doit être commuté à partir de la racine de l'utilisateur.
Vous devez vous connecter pour publier un commentaire.
De
man sudo
:Ainsi, même s'il défie tous les principes de sécurité,
echo 'password' | sudo -S su [...]
devrait fonctionner.Sinon, vous pouvez rendre votre script modifiables que par root et ajoutez les lignes suivantes à
/etc/sudoers
pour permettre à l'utilisateurjohndoe
pour l'exécuter avec des privilèges root sans avoir à entrer son mot de passe:La partie modifiables que par root est important de prévenir
johndoe
de modifier le script et d'exécuter des commandes arbitraires en tant que root.echo password | su -c reboot
su
, bien que, dans mon cas, la machine en question n'a pas et n'aura jamaissudo
sur elle, de sorte que cette solution est assez mort pour la ligue seul.Cette solution de travail en utilisant le 'script' commande à partir de la bsdutiles' package d'installation d'un pty (un terminal). La 'veille' commande est là pour éviter d'envoyer le mot de passe avant le " su " de commande est prêt à le lire. La "queue" de la commande supprimer le "Mot de passe:" ligne d'entrée délivré par "su".
Méfiez-vous que le rootpassword pourrait voir dans de nombreuses façons (histoire, ps, /proc/, etc...). Lancez la commande avec un espace d'au moins d'éviter l'enregistrement de l'historique.