¿Cómo permitir el comando para el usuario www-data?

¿Cómo permitir el comando para el usuario www-data?

Intento ejecutar el siguiente comando PHP para obtener la dirección IP de eth0.

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | tr ':' ' ' | awk '{ print $3 }'"));

Pero no recibo nada a cambio. Si ejecuto exactamente el mismo comando a través de ssh, obtengo la IP, por lo que el comando debería funcionar.

Abrí visudoy agregué estas líneas y reinicié Apache2 después.

www-data        ALL = NOPASSWD: /sbin/ifconfig
www-data        ALL = NOPASSWD: /bin/grep
www-data        ALL = NOPASSWD: /usr/bin/awk
www-data        ALL = NOPASSWD: /usr/bin/tr

Pero todavía no recibo nada a cambio

Respuesta1

Su patrón grep no parece coincidir con el resultado ifconfigy, por lo tanto, grepno produce ningún resultado, intente:

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | awk '{ print $2 }'"));

Respuesta2

Encontré la solución. Esto se debe a que shell_execsiempre obtiene una salida en inglés, incluso si el sistema operativo está configurado en alemán, si ejecuta, shell_exec("/sbin/ifconfig")siempre obtendrá, por ejemplo, inet addren lugar de inet Adresseen la salida.

También olvidé cambiar el usuario y el grupo de mi archivo a www-datawith chowny permitir la ejecución del script con chmod, aunque no sé si esto es necesario.

información relacionada