J'essaie d'utiliser correctement la commande sudo et le fichier sudoers pour pouvoir exécuter une commande en tant qu'autre utilisateur.
J'ai mon fichier sudoers configuré comme suit:
beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh
root, apache et beans font partie des beans de groupe.
De plus, / opt a 755 autorisations, tandis que le répertoire / opt / renovations et ses sous-répertoires appartiennent à l'utilisateur et au groupe des beans.
La commande que j'essaie d'exécuter en tant que beans est:
sudo -n -u apache -i /opt/renovations/var/script-test.sh
-n: est pour que je ne sois pas invité à entrer un mot de passe, car il sera exécuté par un cron
-u: est pour que je puisse me faire passer pour l'utilisateur apache
-i: est pour que je simule une connexion, et mon .profile est chargé. J'en ai besoin pour accéder aux variables d'environnement dans .profile.
Le problème est que lorsque j'exécute la commande sudo, j'obtiens le message suivant:
sudo: désolé, un mot de passe est requis pour exécuter sudo
J'ai essayé d'exécuter cela à la fois sur AIX et Ubuntu, mais le problème est sur les deux systèmes. Cela fonctionne si je lance:
sudo -n -u apache /opt/renovations/var/script-test.sh
Mais sans le -i, mon environnement ne contient pas toutes les variables d'environnement dont j'ai besoin pour être là.
Y a-t-il quelque chose que je dois mettre à jour dans mon fichier sudoers pour que cela soit possible?
beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh
et beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh
Mais maintenant, je reçois la nouvelle erreur, par exemple:ksh: /opt/renovations/var/script-test.sh: cannot execute
visudo -c
renvoie (vérifie les sudoers pour les erreurs). Pouvez-vous également confirmer la version complète d'AIX (oslevel -s
) et la version de sudo installée?