Ejecute un comando como otro usuario una vez:
sudo -u www-data php script.php
Esto debería funcionar si es así root
.
En cuanto a ejecutar siempre php como www-data
, hay varias posibilidades. Podría crear un simple shellscript de envoltura. Si /usr/bin/php
es solo un enlace suave /usr/bin/php5
o similar, eso lo hace más simple. Simplemente reemplace el enlace suave (NO el archivo php5
) con un script como este:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Sin embargo, eso no ha sido probado. También tenga en cuenta que SIEMPRE intentará ejecutarse php5
como usuario www-data
, incluso si el usuario puede no serlo root
y puede que no tenga permiso para hacerlo. Y puede que tampoco sea lo que realmente quieres. Algunos servicios instalados pueden tener problemas al intentar ejecutar php.
Una solución (posiblemente mejor) para aplicar solo eso a la raíz puede ser dejar /usr/bin/php
solo el enlace suave y colocar el script en su /root/bin
lugar. Luego agregue esa carpeta a PATH vía .bashrc
, .profile
o similar. Si es así /etc/skel/.profile
, eso puede indicar cómo se hace:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Una vez que esté en su .bashrc
, .profile
o similar, cada nuevo shell que abra le permitirá ejecutar directamente cualquier ejecutable (+ x) en $HOME/bin
( /root/bin
para root).
Sugerencia: es posible que desee nombrar la secuencia de comandos de envoltura de phpwww
forma similar para especificar explícitamente php script.php
o phpwww script.php
decidir si desea php regular o sudo'ed.
Otra solución es un alias simple. Coloque esto en su .bashrc
, .profile
o similar:
alias phpwww='sudo -u www-data php'