Ich habe eine PHP-Webseite, die auf der lokalen Apache-Installation ausgeführt wird. Die Seite verwendet shell_exec, um über sqlite3 auf die messages/chat.db zuzugreifen.
shell_exec("sudo -u ben sqlite3 ~/Library/messages/chat.db \"SELECT ...
Vor Mojave habe ich die Antwort korrekt erhalten, aber seit dem Update auf Mojave bekomme ich:
unable to open database
Beim direkten Ausführen im Terminal tritt dasselbe Problem auf und wird gelöst, indem Terminal zum Bereich „Vollständiger Festplattenzugriff“ in den Systemeinstellungen hinzugefügt wird.
Ich kann nicht herausfinden, was ich für die PHP-Seite hinzufügen muss; Ich habe alles versucht, was ich finden kann ... sqlite3, apachectl, php-fpm, aber nichts hat funktioniert.
Was muss ich hinzufügen?
FYI: ben ist in der sudoers-Datei
Möglicherweise machst du es falsch.
Zunächst einmal sudo
muss normalerweise ein Passwort eingegeben werden, und das geschieht nicht über eine Web-App.
Zweitens kann der _www-sudo
Benutzer . Das ist eine große Sicherheitslücke. Denken Sie nicht einmal daran, Sudoers zu modifizieren , um dies zuzulassen.
Was Sie stattdessen tun sollten, ist, dem _www- Benutzer (demjenigen, als der der Webserver läuft) Zugriff auf die chat.db
Datei zu gewähren, wie folgt:
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
~/Library
ist gefährlich. Möglicherweise gibt es andere Prozesse/Anwendungen, die darauf angewiesen sind, dass sich dieser Ordner in derselben Gruppe befindet wie der besitzende Benutzer._www
Erlaubnis zu erteilen. Sie sollten auch erwähnen, dass sie nicht einmal daran denken sollten, den Webprozess (Apache/PHP) unter root laufen zu lassen.\Sie haben kein Nicht-Mojave-System zu verifizieren, ~/Library
haben aber mit Mojave eher eingeschränkte Zugriffsrechte:
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
Während also theoretisch jeder Benutzer lesen kann, chat.db
kann niemand außer dem aktuellen Benutzer tatsächlich auf das Verzeichnis zugreifen, in dem es sich befindet.
Wenn Sie sich keine Sorgen machen, dass andere Zugriff auf die Datei erhalten, führen Sie sie aus
chmod o+x ~/Library
chmod o+x ~/Library/Messages
um jedem Benutzer den Zugriff auf Dateien innerhalb von Messages
. Sie können weiterhin nicht auf andere Verzeichnisse zugreifen oder den Inhalt von auflisten Messages
.
Nicht wirklich die richtige Antwort, aber die einzig vernünftige Lösung, die mir einfallen würde.
Ich habe eine einfache Mac-App basierend auf GCDWebServer geschrieben , die den Datenbankinhalt ohne Verwendung von PHP/Apache/etc bereitstellen kann...
Diese App kann vollen Festplattenzugriff erhalten und alles funktioniert.
kein Hang
ls
die Chat-DB von PHP aus aufzurufen, funktioniert das?JBis
Ben Robinson
-u ben
wieder hinzugefügt!ls
scheitert auch.Ben Robinson