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'
Respondido por mwargh en ## linux (IRC Freenode.net)
Para ejecutar comandos como un usuario diferente -> cambie a ese usuario usando:
Todavía estaría interesado (si es posible) en configurar PHP para que se ejecute:
como usuario root
resultará en la creación de un archivo con www-data: usuario / grupo www-data
(de esta manera no tendría que cambiar de root a www-data para ejecutar mis comandos)
fuente
Intentaría hacer / usr / bin / php propiedad de www-data y establecer el permiso suid, lo que obliga al propietario del archivo a ejecutar el comando. Harías esto con:
de ustedes les gusta la notación octal:
Aunque debo decir que debería incomodarlo cada vez que haga que www-data sea el propietario de cualquier cosa, ya que el objetivo de la cuenta de www-data es poseer lo menos posible.
fuente
si obtuvo el php-fpm (FastCGI Process Manager)
puede configurarlo en el archivo de configuración ubicado en (al menos para centos):
/etc/php-fpm.d/www.conf
en la línea 39 puede configurar el usuario y 49 configurar el grupo
fuente
php-cli
, ¿verdad?crear archivo de script:
agregar contenido:
ejecuta tus scripts desde la raíz:
o use intérprete en sus guiones
nota: probado en Debian 7, puede que necesite instalar sudo
todos los archivos creados por script.php tendrán el mismo uid de ese script
fuente