Esegui un comando come un altro utente una volta:
sudo -u www-data php script.php
Questo dovrebbe funzionare se lo sei root.
Per quanto riguarda sempre l'esecuzione di php as www-data, ci sono diverse possibilità. È possibile creare un semplice shellscript wrapper. Se /usr/bin/phpè solo un soft-link /usr/bin/php5o simile, questo lo rende più semplice. Sostituisci il soft-link (NON il file php5) con uno script come questo:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Questo non è testato però. Inoltre, tieni presente che questo tenterà SEMPRE di essere eseguito php5come utente www-data, anche se l'utente potrebbe non esserlo roote potrebbe non essere autorizzato a farlo. E potrebbe anche non essere quello che vuoi davvero. Alcuni servizi installati potrebbero incorrere in problemi quando si tenta di eseguire php.
Una soluzione (forse migliore) da applicare solo a root potrebbe essere quella di lasciare solo il soft-link /usr/bin/phpe posizionare lo script /root/bin. Quindi aggiungere tale cartella a PATH via .bashrc, .profileo simili. Se sì /etc/skel/.profile, ciò può indicare come è stato fatto:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Una volta che questo è nella tua .bashrc, .profileo simile, ogni nuova shell che apri ti permetterà di eseguire direttamente qualsiasi eseguibile (+ x) in $HOME/bin( /root/binper root).
Suggerimento: potresti voler dare un nome simile allo script wrapper in phpwwwmodo da specificare esplicitamente php script.phpo phpwww script.phpdecidere se vuoi php regolare o sudo.
Un'altra soluzione è un semplice alias. Inserire questo nel vostro .bashrc, .profileo simili:
alias phpwww='sudo -u www-data php'