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/php
for apenas um link direto /usr/bin/php5
ou 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 php5
como usuário www-data
, mesmo que o usuário não seja root
e 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/php
virtual em paz e inserir o script /root/bin
. Em seguida, adicione essa pasta para PATH via .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
Quando estiver no seu .bashrc
, .profile
ou similar, todo novo shell que você abrir permitirá que você execute diretamente quaisquer executáveis (+ x) no $HOME/bin
( /root/bin
para root).
Dica: Você pode nomear o script do wrapper como algo que phpwww
você especifique explicitamente php script.php
ou phpwww script.php
decida se deseja php regular ou sudo'ed.
Outra solução é um alias simples. Coloque isso no seu .bashrc
, .profile
ou similar:
alias phpwww='sudo -u www-data php'