Execute um comando como outro usuário uma vez:
sudo -u www-data php script.php
Isso deve funcionar se você for root
.
Como sempre rodando o php como www-data
, existem várias possibilidades. Você poderia criar um shellscript de wrapper simples. Se /usr/bin/php
for apenas um link para /usr/bin/php5
ou similar, isso torna mais simples. Basta substituir o link (NÃO o arquivo php5
) por um script como este:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Isso não foi testado. Também esteja ciente de que isso SEMPRE tentará executar php5
como usuário www-data
, mesmo que o usuário não seja root
e talvez não tenha permissão para fazê-lo. E também pode não ser o que você realmente quer. Alguns serviços instalados podem ter problemas ao tentar executar o php.
Uma solução (possivelmente melhor) para aplicar somente isso ao root pode ser deixar o link de software /usr/bin/php
sozinho e colocar o script em /root/bin
. Em seguida, adicione essa pasta ao PATH por meio de .bashrc
, .profile
ou 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
Uma vez que isso esteja no seu .bashrc
, .profile
ou similar, todo novo shell que você abrir permitirá que você execute diretamente quaisquer executáveis (+ x) em $HOME/bin
( /root/bin
para root).
Dica: você pode querer nomear o script do wrapper como phpwww
, então você especifica explicitamente php script.php
ou phpwww script.php
para decidir se quer um php normal ou sudo'ed.
Outra solução é um alias simples. Coloque isso no seu .bashrc
, .profile
ou similar:
alias phpwww='sudo -u www-data php'