Exécutez une commande en tant qu'autre utilisateur :
sudo -u www-data php script.php
Cela devrait fonctionner si vous êtes root .
Quant à toujours exécuter php en tant que www-data , il y a plusieurs possibilités. Vous pouvez créer un shellscript wrapper simple. Si /usr/bin/php n'est qu'un lien symbolique vers /usr/bin/php5 ou similaire, cela simplifie les choses. Remplacez simplement le lien symbolique (PAS le fichier php5 ) avec un script comme celui-ci :
#!/bin/sh
sudo -u www-data php5 $*
return $?
Ce n'est pas testé cependant. Sachez également que cela essaiera TOUJOURS d'exécuter php5 en tant qu'utilisateur www-data , même si l'utilisateur n'est peut-être pas root et peut ne pas avoir la permission de le faire. Et ce n'est peut-être pas non plus ce que vous voulez vraiment. Certains services installés peuvent rencontrer des problèmes lors de l'exécution de php.
Une solution (peut-être meilleure) pour ne l'appliquer qu'à root peut être de laisser le lien symbolique /usr/bin/php seul et placez le script en /root/bin Au lieu. Ajoutez ensuite ce dossier à PATH via .bashrc , .profile ou similaire. Si vous avez /etc/skel/.profile , cela peut indiquer comment cela se fait :
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Une fois que c'est dans votre .bashrc , .profile ou similaire, chaque nouveau shell que vous ouvrez vous permettra d'exécuter directement tous les exécutables (+x) en $HOME/bin (/root/bin pour la racine).
Astuce :Vous pouvez nommer le script wrapper quelque chose comme phpwww donc vous spécifiez explicitement php script.php ou phpwww script.php pour décider si vous voulez du php normal ou sudo.
Une autre solution est un simple alias. Placez ceci dans votre .bashrc , .profile ou similaire :
alias phpwww='sudo -u www-data php'