Execute um comando como outro usuário uma vez:
sudo -u www-data php script.php
Isso deve funcionar se você estiver root.
Como sempre executando o php as www-data, existem várias possibilidades. Você pode criar um shellscript de wrapper simples. Se /usr/bin/phpfor apenas um link direto /usr/bin/php5ou similar, isso será mais simples. Apenas substitua o link virtual (NÃO o arquivo php5) por um script como este:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Isso ainda não foi testado. Lembre-se também de que isso SEMPRE tentará executar php5como usuário www-data, mesmo que o usuário não seja roote possa não ter permissão para fazê-lo. E também pode não ser o que você realmente deseja. Alguns serviços instalados podem ter problemas ao tentar executar o php.
Uma solução (possivelmente melhor) para aplicar somente isso à raiz pode ser deixar o link /usr/bin/phpvirtual em paz e inserir o script /root/bin. Em seguida, adicione essa pasta para PATH via .bashrc, .profileou similar. Se você tiver /etc/skel/.profile, isso pode indicar como isso é feito:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Quando estiver no seu .bashrc, .profileou similar, todo novo shell que você abrir permitirá que você execute diretamente quaisquer executáveis (+ x) no $HOME/bin( /root/binpara root).
Dica: Você pode nomear o script do wrapper como algo que phpwwwvocê especifique explicitamente php script.phpou phpwww script.phpdecida se deseja php regular ou sudo'ed.
Outra solução é um alias simples. Coloque isso no seu .bashrc, .profileou similar:
alias phpwww='sudo -u www-data php'