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'