J'ai un script bash qui prend un paramètre appelé dans PHP par shell_exec (paramètre script.sh). Fondamentalement, mon but est d'appeler un script qui appartient à un autre utilisateur qui n'est pas apache.Script PHP Bash appelant un autre script Bash
Le script script.sh est un fichier qui contient les éléments suivants (en ce moment il y a des commandes de gestion des erreurs):
#/bin/bash
whoami>>whoami
echo $1 >> parameter
while read f; do
env>>envoutput
sudo -i -u archivescriptowner /path/to/archivescript.sh -command archive >> output
done < $1
Dans mon fichier/etc/sudoers, je donne les résultats suivants:
apache ALL=(archivescriptowner) NOPASSWD: /bin/bash -c /path/to/archivescript.sh *
Lorsque j'exécute ce script en exécutant su -s /bin/bash
apache et que je passe un paramètre, cela fonctionne.
Quand je lance via mon bouton en php, archivescript.sh n'exécute pas
Le fichier whoami a APACHE écrit ce
Le fichier de paramètres a le bon fichier écrit à ce
env montre les éléments suivants
Term=xterm
LD_LIBRARY_PATH=/path/to/library
PATH=/sbin/:usr/sbin:/bin:/usr/bin
PWD=/var/www/html
LANG=C
SHLVL=4
=/bin/env
PWD est la sortie à droite, qui est où mon script est en ce moment, il sera déplacé à l'avenir.
Le fichier de sortie lorsqu'il est exécuté en cliquant sur le bouton est vide.
Je n'arrive pas à comprendre pourquoi cela ne fonctionne pas. Toute idée serait utile. S'il vous plaît laissez-moi savoir si j'ai besoin de donner des informations supplémentaires.
Je pense que la 'entrée sudoers' devrait simplement dire'/chemin/vers/archivescript.sh', sans '/ bin/bash -c' avant. – Barmar
Non, cela n'a probablement rien à voir avec le problème. Il y a beaucoup de choses ici qui sont très jd ici - le haut de ma liste de choses à vérifier est de savoir si le drapeau '-i' cause des complications et si le serveur web exécute chroot. – symcbean
@Barmar Enlever/bin/bash -c demande un mot de passe lors de la connexion en tant qu'utilisateur apache et ne fonctionne pas non plus pour le php. Cela étant dit, si je supprime sudo -i, enlever/bin/bash -c fonctionne pour l'utilisateur apache, mais pas avec php. – user3481541