Dar acceso a disco completo de PHP local en Mojave

1

Tengo una página web de PHP que se ejecuta en la instalación local de apache. La página usa shell_exec para acceder a los mensajes / chat.db a través de sqlite3.

shell_exec("sudo -u ben sqlite3 ~/Library/messages/chat.db \"SELECT ...

Antes de Mojave obtuve la respuesta correctamente, pero desde la actualización a Mojave recibí:

unable to open database

Cuando se ejecuta directamente en el Terminal, este mismo problema ocurre y se resuelve agregando el Terminal al panel "Acceso total al disco" en las Preferencias del sistema.

No puedo entender lo que necesito agregar para la página PHP; He intentado todo lo que puedo encontrar ... sqlite3, apachectl, php-fpm, pero nada ha funcionado.

¿Qué necesito agregar?

FYI: ben está en el archivo sudoers

    
pregunta Ben Robinson 04.11.2018 - 01:12

3 respuestas

2

Posiblemente lo estés haciendo incorrectamente.

En primer lugar, sudo generalmente requiere que se escriba una contraseña, y eso no sucederá a través de una aplicación web.

En segundo lugar, el usuario _www no puede utilizar sudo . Eso es un gran agujero de seguridad. Ni siquiera pienses en modificar sudoers para permitirlo.

Lo que deberías estar haciendo es permitir que el usuario _www (el que ejecuta el servidor web) acceda al archivo chat.db , como este:

sudo chgrp _www ~/Library
sudo chgrp _www ~/Library/messages
sudo chgrp _www ~/Library/messages/chat.db
chmod g+rx ~/Library
chmod g+rx ~/Library/messages
chmod g+r  ~/Library/messages/chat.db
    
respondido por el peter 15.11.2018 - 10:56
0

No tengo un sistema que no sea de Mojave para verificar, pero con Mojave ~/Library tiene derechos de acceso más restringidos:

pse@Mithos:~$ ll -d . Library Library/Messages Library/Messages/chat.db
drwxr-xr-x@ 137 pse  staff      4384 Nov 11 09:11 ./
drwx------+ 139 pse  staff      4448 Oct  8 20:52 Library/
drwx------   13 pse  staff       416 Sep 27 17:47 Library/Messages/
-rw-r--r--    1 pse  staff  12169216 Nov 15 20:08 Library/Messages/chat.db

Entonces, en teoría, cualquier usuario puede leer chat.db nadie, además del usuario actual, puede acceder al directorio en el que reside.

Si no te preocupa que otros tengan acceso al archivo ejecutado

chmod o+x ~/Library
chmod o+x ~/Library/Messages

para permitir que cualquier usuario acceda a archivos dentro de Messages . Aún no podrán acceder a otros directorios o listar el contenido de Messages .

    
respondido por el nohillside 15.11.2018 - 20:15
0

Realmente no es la respuesta correcta, pero es la única solución sensata que puedo encontrar.

He escrito una aplicación Mac simple basada en GCDWebServer que puede servir el contenido de la base de datos sin usar PHP / Apache / etc. ..

A esa aplicación se le puede dar acceso total al disco y todo funciona.

    
respondido por el Ben Robinson 19.11.2018 - 20:39

Lea otras preguntas en las etiquetas