Fornire l'accesso completo al PHP PHP locale in Mojave

1

Ho una pagina Web PHP in esecuzione sull'installazione locale di Apache. La pagina utilizza shell_exec per accedere ai messaggi / chat.db tramite sqlite3.

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

Prima di Mojave ho ricevuto correttamente la risposta, ma da quando ho effettuato l'aggiornamento a Mojave ottengo:

unable to open database

Quando si esegue direttamente nel terminale, questo stesso problema si verifica e viene risolto aggiungendo Terminal al riquadro "Accesso completo al disco" in Preferenze di sistema.

Non riesco a capire cosa devo aggiungere per la pagina PHP; Ho provato tutto quello che riesco a trovare ... sqlite3, apachectl, php-fpm, ma niente ha funzionato.

Che cosa devo aggiungere?

FYI: ben è nel file sudoers

    
posta Ben Robinson 04.11.2018 - 01:12
fonte

3 risposte

2

Probabilmente lo stai facendo in modo non corretto.

Innanzitutto, sudo richiede in genere la digitazione di una password e ciò non avverrà tramite un'app Web.

In secondo luogo, l'utente _www non utilizza sudo . Questa è una grande falla nella sicurezza. Non pensare nemmeno di modificare sudoers per consentirlo.

Ciò che dovresti fare invece è consentire all'utente _www (quello con cui il server web viene eseguito) di accedere al file chat.db , in questo modo:

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
    
risposta data 15.11.2018 - 10:56
fonte
0

Non hai un sistema non Mojave da verificare, ma con Mojave ~/Library ha diritti di accesso piuttosto limitati:

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

Quindi, mentre in teoria qualsiasi utente può leggere chat.db nessuno oltre l'utente corrente può effettivamente accedere alla directory in cui risiede.

Se non ti preoccupi degli altri che accedono al file esegui

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

per consentire a qualsiasi utente di accedere ai file entro Messages . Non saranno ancora in grado di accedere ad altre directory o di elencare il contenuto di Messages .

    
risposta data 15.11.2018 - 20:15
fonte
0

Non è la risposta corretta in realtà, ma l'unica soluzione ragionevole che potrei trovare.

Ho scritto una semplice App per Mac basata su GCDWebServer che può servire il contenuto del database senza utilizzare PHP / Apache / etc. ..

Quella app può essere fornita con accesso completo al disco e tutto funziona.

    
risposta data 19.11.2018 - 20:39
fonte

Leggi altre domande sui tag