Comment exécuter un script shell en tant qu’utilisateur différent avec PHP sur Nginx?

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é!