PHP ejecutando programas de la shell

Marco González Luengo noquierouser en gmail.com
Mie Jun 27 18:53:40 CLT 2012


El 27 de junio de 2012 18:39, Hector Gatica
<hector.gatica en opensynapse.cl>escribió:

> On Wed, 27 Jun 2012 18:34:06 -0400, Waldo Morales
> <waldo.morales en gmail.com> wrote:
> > On 06/27/2012 06:23 PM, Hector Gatica wrote:
> >> Si tienes safe_mode apagado , haz intentado con exec ?
> >>
> >> Saludos.
> >>
> >> On Wed, 27 Jun 2012 18:02:47 -0400, Marco González Luengo
> >> <noquierouser en gmail.com> wrote:
> >>> El 27 de junio de 2012 17:53, jmvidal.cl en gmail.com
> >>> <jmvidal.cl en gmail.com>escribió:
> >>>
> >>>> Y porque no puedes tirar un cron? No me quedo claro
> >>>>
> >>>
> >>> No puedo tirar un cron porque el encendido de las máquinas es bajo
> demanda,
> >>> o sea, cuando se quiere que se enciendan. Lo mismo con el comando beep
> que
> >>> trato de correr.
> >>>
> >>> Como aporte de antecedentes, me puse a probar si acaso podía correr
> >>> comandos como `ls -la` o `dmesg` con el script que puse al iniciar el
> hilo;
> >>> y éstos corren sin problema. Pero tratar de correr `beep` o
> `ether-wake`
> >>> (con o sin parámetros) no me arroja resultados.
> >>>
> >>> También como mencioné anteriormente, tengo php con safe_mode apagado y
> >>> SELinux desactivado, así que no veo qué podría estar impidiendo correr
> >>> ciertos comandos mediante PHP.
> >>
> > Hola,
> >
> >  Tu problema aparentemente son los permisos de ejecucion, prueba con
> > exec como dice el amigo antes y tambien dandole mas permisos al usuario
> > que ejecuta o al programa mismo ( prueba con whoami , luego "su <usuario
> > de whoami>" e intenta correr estos comandos desde una consola ) .
> >
> >
> >
> > Saludos.
> >
> > PD : nunca es buena idea darle poderes a php para prender o apagar
> > computadoras expuesto a internet, si hay otra solucion posible claro.
>
> Lo otro , y pensando en que si corre eh php-cli , pero no sobre web.
> Efectivamente puede ser un tema de permisos.
> PHP corre sobre www-data sobre apache por ejemplo. Probablemente no
> tenga acceso a ese binario.
>
> Por ultimo , copia el ejecutable del beep a un home , dale 755 y
> verifica si corre ( ahí sales de dudas ).
>

Probé con `whoami`y vi que corre con el usuario "apache".

Hice esto de copiar `beep` a un home, pero al ejecutarlo me da un exitcode
de 126 al ejecutar `/home/probeta/beep`, incluso con chmod 777 y chown
apache:

Pero si, definitivamente esto es problemas de permisos de ejecución. ¿Cómo
podría darle permisos a apache para correr esto? Me encontré con que podría
darle la pasada en /etc/sudoers, pero no quiero llegar a ése punto.


>
> Saludos.
>
>


Más información sobre la lista de distribución Linux