PHP ejecutando programas de la shell

Waldo Morales waldo.morales en gmail.com
Mie Jun 27 19:05:05 CLT 2012


On 06/27/2012 06:53 PM, Marco González Luengo wrote:
> 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.
>>
>>
Una ultima cosa,

 No funcionara lo de copiar el binario a un "home" porque el apache
corre probablemente en otro entorno ( corre "pwd" tal como "whoami" y
veras), adicionalmente ( y probablemente ) la carpeta donde esta el
usuario y el apache corriendo no tiene permisos de ejecucion ( al
contrario que la carpeta cgi-bin por ejemplo)

Digo probablemente porque depende de muchas otras cosas ,configuracion
del OS, sistema de ficheros, configuracion del apache etc.

Saludos.


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