Ejecute un comando como otro usuario una vez:
sudo -u www-data php script.php
Esto debería funcionar si eres root
.
En cuanto a ejecutar siempre php como www-data
, hay varias posibilidades. Puede crear un shellscript de envoltura simple. Si /usr/bin/php
es solo un enlace suave a /usr/bin/php5
o similar, que lo hace más sencillo. Simplemente reemplace el enlace suave (NO el archivo php5
) con un script como este:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Aunque eso no está probado. También tenga en cuenta que esto SIEMPRE intentará ejecutar php5
como usuario www-data
, incluso si el usuario no puede ser root
y es posible que no tenga permiso para hacerlo. Y también puede que no 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 el enlace suave /usr/bin/php
solo y coloque el script en /root/bin
en cambio. Luego agregue esa carpeta a PATH a través de .bashrc
, .profile
o similar. Si tienes /etc/skel/.profile
, que puede señalar cómo se hace eso:
# 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 raíz).
Sugerencia:es posible que desee nombrar la secuencia de comandos contenedora algo así como phpwww
por lo que especifica explícitamente php script.php
o phpwww script.php
para decidir si desea php regular o sudo.
Otra solución es un alias simple. Coloca esto en tu .bashrc
, .profile
o similar:
alias phpwww='sudo -u www-data php'