Exécutez une commande en tant qu'autre utilisateur une fois:
sudo -u www-data php script.php
Cela devrait fonctionner si vous l'êtes root
.
Quant à toujours exécuter php as www-data
, il existe plusieurs possibilités. Vous pouvez créer un script shell simple. Si ce /usr/bin/php
n'est qu'un lien logiciel vers /usr/bin/php5
ou similaire, cela le rend plus simple. Remplacez simplement le lien logiciel (PAS le fichier php5
) par un script comme celui-ci:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Ce n'est pas testé cependant. Sachez également que cela tentera TOUJOURS de s'exécuter en php5
tant qu'utilisateur www-data
, même si l'utilisateur peut ne pas être root
et ne pas être autorisé à le faire. Et ce n'est peut-être pas 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 n'appliquer cela qu'à root peut être de laisser le soft-link /usr/bin/php
seul et de placer le script à la /root/bin
place. Ajoutez ensuite ce dossier à PATH via .bashrc
, .profile
ou similaire. Si c'est le cas /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 cela est dans votre .bashrc
, .profile
ou similaire, chaque nouveau shell que vous ouvrez vous permettra d'exécuter directement tous les exécutables (+ x) dans $HOME/bin
( /root/bin
pour root).
Astuce: Vous voudrez peut-être nommer le script de wrapper quelque chose comme phpwww
ça, vous spécifiez donc explicitement php script.php
ou phpwww script.php
décidez si vous voulez un php régulier ou sudo'ed.
Une autre solution est un simple alias. Placez ceci dans votre .bashrc
, .profile
ou similaire:
alias phpwww='sudo -u www-data php'