Entfernen von Anwendungen aus den Ortungsdiensten in Sicherheit und Datenschutz unter Mac OS X 10.8

20

Ich wollte Anwendungen aus den Ortungsdiensten in den Sicherheits- und Datenschutzeinstellungen von MaC OS X 10.8 Mountain Lion entfernen. (Die Apps wurden immer noch aufgelistet, obwohl sie deinstalliert wurden.) Unter Mac OS X 10.7 fand ich die Meldung "Anwendung von Ortungsdiensten in Sicherheit und Datenschutz entfernen" , und dies brachte mich in die richtige Richtung. Hier ist das OS X 10.8.2 Mountain Lion-Äquivalent, das für mich funktioniert hat. Der Hauptunterschied ist der Speicherort der clients.plist-Datei. Ich wollte auch einen schrittweisen Prozess bereitstellen.

HAFTUNGSAUSSCHLUSS: Das hat bei mir funktioniert. Stellen Sie sicher, dass Sie eine gute Sicherung Ihres Systems haben. Dieser Vorgang umfasst das Erstellen einer Sicherungskopie der Datei clients.plist, die jedoch niemals zu sicher sein kann.

1. Starten Sie das Terminal und wechseln Sie dann in eine Root-Shell
sudo -s

2. Wechseln Sie zu / var / db / locationd
cd /var/db/locationd

3. Erstellen Sie eine Sicherungskopie der Datei clients.plist
cp -p clients.plist clients.plist.save

4. clients.plist nach xml konvertieren (editierbares Format)
plutil -convert xml1 clients.plist

5. Verwenden Sie vi (vim), um die Datei clients.plist zu bearbeiten und die Anwendung zu entfernen.
vi clients.plist

Die Datei enthält wahrscheinlich viele Anwendungseinträge. Hier ist das Format eines einzelnen Anwendungseintrags (in diesem Fall Safari). Der gesamte Eintrag muss gelöscht werden.

    <key>com.apple.Safari</key>
    <dict>
        <key>Authorized</key>
        <true/>
        <key>BundleId</key>
        <string>com.apple.Safari</string>
        <key>Executable</key>
        <string>/Applications/Safari.app/Contents/MacOS/Safari</string>
        <key>LocationTimeStopped</key>
        <real>376348187.80421197</real>
        <key>Registered</key>
        <string>/Applications/Safari.app/Contents/MacOS/Safari</string>
        <key>RequirementString</key>
        <string>identifier "com.apple.Safari" and anchor apple</string>
        <key>Whitelisted</key>
        <false/>
    </dict>

6. Konvertieren Sie die Datei clients.plist zurück in die Binärdatei
plutil -convert binary1 clients.plist

7. Starten Sie locationd neu
killall locationd

Wenn die Apps noch vorhanden sind, wiederholen Sie den Vorgang, mit Ausnahme des Neustarts von locationd mit kill -9, nachdem Sie die PID wie folgt ermittelt haben. Die PID ist das zweite Feld in der ps-Ausgabe.

ps -ef | grep locationd | grep -v grep
Ausgabe: 205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427

Ich habe den Vorgang zweimal ausgeführt, um jeweils eine App zu entfernen. Das erste Mal war killall ausreichend. Das zweite Mal war es nicht. Keine Ahnung warum. Es hat sich so verhalten, als würde locationd einen Cache führen und clients.plist neu erstellen. Ich sage das, weil die Einträge nach dem Ausführen von killall wieder zu clients.plist hinzugefügt wurden - und sogar bei einem Neustart. Was auch immer die Ursache sein mag, mit kill -9 konnte ich das Problem lösen.

Wenn alles schief geht, kopieren Sie die Originaldatei zurück und starten Sie locationd neu.
cp -p clients.plist.save clients.plist
killall locationd(oder die kill -9 Methode)

Ich hoffe das hilft. Prost!

Scot S
quelle
1
kill -HUP könnte zuverlässiger sein; Es ist das Legacy-Kill-Signal, das einen Daemon anweist, den Cache zu leeren und die Konfigurationsdatei erneut zu lesen. Ich sehe, dass killall -HUP locationd funktionieren würde. Ein möglicher Grund, warum die anderen Kills nicht funktionierten, könnte sein, dass die Cache-Dateien vom neu erstellten Prozess noch gelesen wurden.
Nevin Williams
Wissenswertes: Ich bin mir nicht sicher, ob dieses Verhalten vor High Sierra vorlag. Wenn Sie jedoch in diesem MacOS eine Datei deaktivieren, die nicht mehr im Einstellungsbereich vorhanden ist, wird sie von der App normalerweise nicht mehr in der Liste angezeigt. Mit dieser Methode habe ich jedoch festgestellt, dass einige dieser angeblich gelöschten Apps tatsächlich noch in der Liste enthalten sind und nur nicht angezeigt werden.
DonielF
Aufgrund meiner Erfahrung sollte ich auch Folgendes beachten: Ich habe aus bestimmten Gründen versucht, ein Applescript von mir aus den Systemeinstellungen zu entfernen, und es tauchte immer wieder auf, dass mein Standort für mehrere Versuche gesucht wurde, bis es schließlich geschlossen wurde. Ich nehme an, das liegt daran, dass ich immer wieder versucht habe, diese Codezeile im Applescript auszuführen, und die Bash im Hintergrund ausgeführt wurde, bis sie aus meinen Systemeinstellungen gelöscht wurde ... und daher zur nächsten Zeile in der Bash überging. Da ich anscheinend mehrere davon im Hintergrund laufen hatte, musste ich jedes einzeln abbrechen, während ich dies tat.
DonielF

Antworten:

5

Der Eigenschaftenlisten-Editor von Xcode kann auch zum Löschen der Einträge alter Apps verwendet werden. Da die Datei jedoch schwer zugänglich ist, müssen die Berechtigungen vorübergehend geöffnet werden:

mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist

so können das Verzeichnis und die Datei von allen Benutzern gelesen und geschrieben werden. Dann zur Vereinfachung su zu Ihrer Login-ID:

mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist 

Dies setzt voraus, dass Xcode die Standard-App zum Öffnen von * .plist-Dateien ist und Sie mit dem Eigenschaftenlisten-Editor vertraut sind. Unter der Root-Eigenschaft befinden sich 3 Standardwörterbucheinträge:

com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd

Diese sollten nicht entfernt werden. Bei Einträgen, die zu längst vergangenen Apps gehören, können Sie den Mauszeiger direkt links neben der Wörterbuchspalte der entsprechenden App-Zeile platzieren. Dort wird ein graues umgekehrtes "-" angezeigt. Wenn Sie darauf klicken, werden das Element und alle untergeordneten Elemente entfernt. Wenn Sie den Eintrag lieber zuerst überprüfen möchten, klicken Sie auf das graue Dreieck (für Benutzer der Finder-Listenansicht bekannt) links neben der Schlüsselzeichenfolge, um das Wörterbuch zu erweitern und seine Elemente anzuzeigen.

Sobald Sie die Schlüssel zu Ihrer Zufriedenheit gelöscht oder deaktiviert haben, speichern Sie die Datei und beenden Sie Xcode. Gehen Sie dann im Terminal wie folgt vor:

mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root# 

Drücken Sie zweimal den Aufwärtspfeil, um den Befehl chmod aufzurufen, ctrl-Azum Zeilenanfang zu gehen, cursor-rightetwa achtmal, ändern Sie das '+' in ein '-', oder geben Sie Folgendes ein, um die Berechtigungen wiederherzustellen:

mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist 

dann HUP den Location Daemon:

 mini-nevie:~ root# killall -HUP locationd

Eine schnelle Überprüfung der Registerkarte "Security.PrefPane-Datenschutz" sollte Ihre Änderungen bestätigen.

Standard-Haftungsausschlüsse, warnende Leidensgeschichten, Schelte, Glucksen und "Ist diese Reise wirklich notwendig?" Reflexionen sind besonders anwendbar.

Nevin Williams
quelle
3

Verwenden von tccutil (OS X-Befehlszeilenprogramm)

Ich denke, der schnellste und sicherste Weg, dies zu tun, ist das OS X-Befehlszeilenprogramm tccutil

  • Öffnen Sie ein neues Terminalfenster
  • Schließen Sie alle geöffneten Prefpane-Fenster "Sicherheit & Datenschutz"
  • Geben Sie die folgenden hervorgehobenen Befehle ein oder fügen Sie sie ein

Setzen Sie die Ortungsdienste zurück

tccutil reset CoreLocationAgent

Zugriff auf Kontakte / Adressbuch zurücksetzen:

tccutil reset AddressBook

Setzen Sie den Zugriff auf Erinnerungen zurück

tccutil reset Reminders

Setzen Sie den Zugriff auf Kalender zurück

tccutil reset Calendar

Und das ist alles was dazu gehört. Übrigens brauchte ich kein Sudo.

Andreas
quelle
Funktioniert leider nicht bei mir. Ich erhalte die Meldung "Datenbank konnte nicht zurückgesetzt werden".
Seltsame Zeiten
@strangetimes: Das hatte ich total vergessen. Ich habe das in diesem Link erwähnte modifizierte tccutil nicht ausprobiert, aber es scheint mir einen Versuch wert zu sein: github.com/jacobsalmela/tccutil
Andreas
@strangetimes: Ich habe vergessen zu erwähnen, dass der Grund, warum es nicht funktioniert, auf den Schutz der Systemintegrität zurückzuführen ist, laut github.com/jacobsalmela/tccutil
Andreas
Der Befehl tccutil reset CoreLocationAgentscheint nicht mehr zu funktionieren. Siehe diese Ausgabe .
Nix
Das Entfernen der Kalender hat funktioniert, das Anfordern einer neuen Autorisierung funktioniert jedoch nicht. Dazu musste ich die Benutzer- / Bibliotheks- / Kalender- / Kalender-Cache-Datenbank entfernen und dann den Computer neu starten
Cristi Băluță
1

Dies ist die alte und die von mir vorgeschlagene Lösung unterscheidet sich technisch nicht von der Lösung in der Post und der akzeptierten, aber es ist viel weniger mühsam und viel einfacher zu automatisieren (nützlich für das Debuggen). Mach einfach

/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd

als root.

Michael Krelin - Hacker
quelle
Funktioniert bei mir. Vielen Dank!
dbv
0

Zusätzlich zu den vorherigen Antworten konnte ich dieses Problem erst beheben, nachdem ich den Dateibesitzer korrigiert hatte:

# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist

Starten Sie dann den Computer neu.

T. Gil
quelle