unix - exécuter une commande en tant qu'autre utilisateur
Je suis un newbie à Unix. Je suis en train de lancer un script shell de commande en tant qu'autre utilisateur.
Par exemple:
Je suis connecté en tant qu'utilisateur user1 et voulez exécuter un script que user2. Je ne veux pas l'invite de mot de passe et je veux qu'il soit auto-saisi. Je suis conscient de l'authentification par clé publique, mais j'essaie de savoir si il ya quelque chose comme:
sudo -u user2 script.sh
Je suis en train de cron, donc je ne veux pas l'invite de mot de passe. Je veux qu'il soit géré dans la commande sudo lui-même.
s'il vous plaît aider
Je ne comprendrai jamais ce "hors sujet" chose sur Stack Overflow - souvent, il me semble qu'il est utilisé par des gens qui ne connaissent pas la technologie dans la question, ou ne comprenez pas la question elle-même.
OriginalL'auteur Kannan Lg | 2012-06-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter NOPASSWD option pour
/etc/sudoers
fichier.Mais peut-être que ce n'est pas un bon pour vous, pour des raisons de sécurité.
Une autre option que vous avez: utilisation
sudo
, mais de l'exécuter pas directement à partir d'un script, mais en utilisantpexpect
ouexpect
, qui le fera entrer le mot de passe pour vous. C'est aussi peut-être pas idéal du point de vue sécurité, parce que vous avez besoin pour enregistrer le mot de passe dans le script.Avec
expect
vous pouvez faire quelque chose comme:N'oubliez pas de mettre 500 permission sur le fichier.
Avec
pexpect
(qui est un module python) cela va ressembler à:Si vous exécutez la commande dans
cron
et ajouter la commande à la crontab de l'utilisateur user1, vous pouvez le faire aussi. Qui peut être la meilleure solution.Lg: Oui, nous pouvons!
OriginalL'auteur Igor Chubin
Ajouter un NOPASSWD option dans
/etc/sudoers
comme Igor dit, ou tout simplement de planifier la commande dans user2'crontab en premier lieu.OriginalL'auteur Useless