Essayer de déclencher un script shell avec une requête POST (gérée par nginx). Pas de succès jusqu’à présent.
Ce que j’ai:
exec('whoami'); // nginx nginx:x:220:498:Nginx web server:/var/lib/nginx:/sbin/nologin
Comme nous pouvons le voir, l’utilisateur nginx n’a pas de shell. Est-ce que ça pourrait être un problème? Prochain,
nginx ALL=(user) NOPASSWD: /path/to/script.sh
Si je change nginx
à mon utilisateur réel, je peux exécuter sudo -u user /path/to/script.sh
sans invite de mot de passe, mais pour une raison quelconque, je demande toujours un mot de passe si je lance su -s /bin/bash -c /path/to/script.sh user
. Peut-être, la dernière invocation est-elle un peu plus adaptée à l’utilisateur nginx
, car il possède un shell nologin
.
Donc, chaque fois que je lance exec('sudo -u user /path/to/script.sh');
ou lancez un script wrapper avec cette ligne via PHP – rien ne se passe. Je ne peux même pas identifier ce qui ne fonctionne pas, car aucune erreur n’est levée.
Toute aide serait très appréciée.
Grâce à @fejese et @sortingplee, j’ai finalement compris. J’ai dû paramétrer dans le fichier sudoers quand cela a été changé en …
#Defaults requiretty #Defaults !visiblepw
… tout s’est passé!