EJECUTAR COMANDOS LINUX DESDE PHP

AdjuntoTamaño
Plain text icon sudoers.txt684 bytes
Plain text icon php_ini.txt45.27 KB
Plain text icon httpd.conf_.txt34.07 KB

Forums: 

SALUDOS cORDIALES A TODOS

Estoy tratando y trando y no puedo ejecutar un comando linux desde php para lo cual he modificado el archivo /etc/sudoers para darle permisos al apache.

Adjunto acontinuación mis archivos
/etc/sudoers
php.ini
httpd.conf

LA FUNCION PHP DESDE AL QUE QUIERO EJECUTAR EL COMANDO du es el siguiente:

function Get_Tamanio_Path($path_carpeta)
{
//echo $path_carpeta ---->aqui imprimo haber que me llega y me llega /etc/gonzalo (sin espacios al principio ni al final)

$com = "du -sh $path_carpeta";
$pasa= exec("$com"); // aqui ya probe tambien $pasa= exec($com); sin comillas
$cant=strlen($pasa);
// echo $cant-----//aqui el valor que imprime tambien es cero a pesar que ejecutando du -sh /etc/gonzalo desde la consola de linux me devuelve un valor mayor que cero
return $cant;

}// fin Get_Tamanio_Path($username)

$tam=Get_Tamanio_Path("/etc/gonzalo");

echo "El tamaño de la carpeta es:",$tam;/// el valor que me devuelve es 0;

//EL SOFTWARE QUE UTLIZO Y LAS VERSIONES SON ALS SIGUIENTES:

Linux Centos 4.4

Php 5.1.6

Mysql 5.0.27

Apache 2.0.52

POR FAVOR ESPERO PUEDAN AYUDARME PRONTO,AGRADECERE LOS APORTES DE TODOS , PERO ESPECIALMENTE DE LOS QUE ANTERIORMENTE HAYAN REALIZADO ESTA TAREA , MUCHAS GRACIAS.

Att.

BuscaSolus

ejecutar comandos asterisk desde la Web

omegajack, gracias por informar el procedimiento para ejecutar comandos asterisk desde la web. acabo de hacer todo lo que comentas, peron no me quiere funcionar. ejecuta todo perfecto, en el log del php no sale nada, pero en la pagina web no me muestras los peers.

gracias

A ve no se si me equivoque,

A ve no se si me equivoque, pero pienso que esta definiendo mal el visudo, ahora hay Ale25 te puso un ejemplo del visudo, mi pregunta va con esto "User_Alias usuario = daemon" , esta utilizando el mismo usuario.?? ya que en esa linea se define lo usuario en la cual quiere que ejecute algun comando como root.

Saludos

Es un error de permisos.....

Saludos a todos

No sabia como monitorear el funcionamiento del apache, y luego de la pregunta de Qu'e dicen los logs?, ejecute el comando:

# tail -f /etc/httpd/logs/error_log

Y OBTUVE LO SIGUIENTE:

du: no se puede acceder a /home/vmail/dominio/jperez/: Permiso denegado

Los permisos de las carpetas son los siguientes:

CARPETA : home
Propietario:root
Grupo: root
Vista # : 755

CARPETA : vmail
Propietario:vmail
Grupo: vmail
Vista # : 705

CARPETA : dominio
Propietario:vmail
Grupo: vmail
Vista # : 705

CARPETA : jperez (y todas las carpetas y archivos dentro de esta)
Propietario:vmail
Grupo: vmail
Vista # : 705

QUE MAS TENGO QUE REVISAR GRACIAS DE ANTEMANO .....

como usar sudo

Imagen de acl

Es que no estas convirtiendote en root exitosamente, la falla esta en el uso de sudo en el script.

Fijate en el ultimo mensaje de antares, cuando usas sudo, y defines el comando a ejecutar en sudoers, lo haces con la ruta completa al ejecutable. Cuando corres sudo, tienes que hacer lo mismo, en tu caso falta la ruta completa al ejecutable du.

cambie la liena de sudo y aparecio otro error

ejecute desde php

sudo /usr/sbin/du -sh /home/vmail/dominio/jperez como me recomineda antares en su ultimo mensaje, pero revisando los logs me salio lo siguiente:

unable to change to sudoers gid: Operation not permitted

SI EJECUTO SOLO du -sh /home/vmail/dominio/jperez ME SALE OTRA VEZ EN LOS LOGS DE APACHE:
du: no se puede acceder a «/home/vmail/dominio/jperez/»: Permiso denegado

sudo y php

Imagen de acl

Y por si acaso no te sale en /var/log/messages algo como


kernel: audit(1136475268.917:338): avc: denied {
setrlimit } for pid=8709 comm="sudo"

?

Si es asi, tienes que desactivar selinux o modificar la politica para que sudo pueda trabajar. Esto lo vi buscando tu mensaje de error en google. Me tomo 3 minutos, tu tambien hubieras podido hacerlo.

gracias ya lo desactive anteriormente....

Gracias por la sugerencia perdon otra vez por no detallar lo que voy filtrando para allar la solucion

Ya desactive selinux para que sudo pueda trabajar.

De hecho antes de desactivar el selinux me salia algo como lo siguiente:

audit(1183578918.903:593): avc: denied { getattr } for pid=16864 comm="du"

MI ARCHIVO /etc/grub.conf con la modificacion tiene el siguiente contenido:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-55.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-55.EL ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-55.EL.img
title CentOS (2.6.9-55.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-55.ELsmp ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-55.ELsmp.img
title CentOS (2.6.9-42.0.10.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.10.ELsmp ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-42.0.10.ELsmp.img
title CentOS (2.6.9-42.0.10.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.10.EL ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-42.0.10.EL.img
title CentOS (2.6.9-42.0.8.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.8.EL ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-42.0.8.EL.img
title CentOS (2.6.9-42.0.8.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.8.ELsmp ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-42.0.8.ELsmp.img
title CentOS (2.6.9-42.0.3.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.3.EL ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-42.0.3.EL.img
title CentOS (2.6.9-42.0.3.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.3.ELsmp ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-42.0.3.ELsmp.img
title CentOS-4 i386 (2.6.9-34.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-34.ELsmp ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-34.ELsmp.img
title CentOS-4 i386-up (2.6.9-34.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-34.EL ro root=LABEL=/ selinux=0 rhgb quiet
initrd /initrd-2.6.9-34.EL.img

Pero igual me sigue saliendo en /var/log/message:

audit(1183581638.989:707): avc: denied { getattr } for pid=18818 comm="du" name="jperez" dev=sda3 ino=1951430 scontext=user_u:system_r:httpd_sys_script_t tcontext=root:object_r:user_home_t tclass=dir

GRACIAS DE TODAS FORMAS VOY A SEGUIR INTENTANDO MODIFICAR LAS POLITICAS QUE SUGIERAS O ALGO MAS SI LO SOLUCIONO LO COMENTO....

Edita el

Imagen de deathUser

Edita el archivo:

/etc/selinux/config

Y déjalo como:


SELINUX=disabled

Reinicia y prueba nuevamente ...

Suerte
bye
:)

Páginas