Ich wollte Anwendungen aus den Ortungsdiensten in den Sicherheits- und Datenschutzeinstellungen auf Mac OS X 10.8 Mountain Lion entfernen. (Die Apps wurden immer noch aufgelistet, obwohl sie deinstalliert waren.) Ich fand den BeitragEntfernen Sie die Anwendung aus den Ortungsdiensten unter „Sicherheit und Datenschutz“ auf Mac OS X 10.7, und das hat mich in die richtige Richtung gebracht. Hier ist das OS X 10.8.2 Mountain Lion-Äquivalent, das bei mir funktioniert hat. Der Hauptunterschied ist der Speicherort der Datei clients.plist. Ich wollte auch einen schrittweisen Prozess bereitstellen.
HAFTUNGSAUSSCHLUSS: Das hat bei mir funktioniert. Stellen Sie sicher, dass Sie eine gute Sicherungskopie Ihres Systems haben. Dieser Vorgang umfasst die Erstellung einer Sicherungskopie der Datei clients.plist, aber man kann nie zu sicher sein.
1. Starten Sie das Terminal und wechseln Sie dann per Sudo zu einer Root-Shell
sudo -s
2. Gehen 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. Konvertieren Sie clients.plist in XML (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 eine Binärdatei
plutil -convert binary1 clients.plist
7. Starten Sie locationd neu
killall locationd
Wenn die Apps noch da sind, führen Sie den Vorgang erneut aus, starten Sie locationd jedoch mit kill -9 neu, 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. Beim ersten Mal reichte killall aus. Beim zweiten Mal nicht. Ich weiß nicht, warum. Es verhielt sich so, als ob locationd einen Cache führte und clients.plist neu erstellte. Ich sage das, weil die Einträge nach dem Ausführen von killall – und sogar bei einem Neustart – wieder zu clients.plist hinzugefügt wurden. Was auch immer die Grundursache war, die Verwendung von kill -9 löste das Problem für mich.
Wenn etwas schief geht, kopieren Sie die Originaldatei zurück und starten Sie locationd neu.
cp -p clients.plist.save clients.plist
killall locationd
(oder verwenden Sie die Methode kill -9)
Ich hoffe, das hilft. Prost!
Antwort1
Mit dem Eigenschaftenlisten-Editor von Xcode lassen sich auch Einträge alter Apps löschen, da die Datei aber schwer zugänglich ist, müssen die Berechtigungen temporär geöffnet werden:
mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
damit das Verzeichnis und die Datei von allen Benutzern gelesen und geschrieben werden können. Führen Sie dann der Einfachheit halber einen su-Befehl zu Ihrer Anmelde-ID aus:
mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist
Dies setzt voraus, dass Xcode die Standardanwendung zum Öffnen von *.plist-Dateien ist und Sie mit dem Property List Editor vertraut sind. Unter der Root-Eigenschaft gibt es drei 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 verschwundenen Apps gehören, können Sie den Mauszeiger direkt links neben die Wörterbuchspalte der entsprechenden App-Zeile bewegen, wo ein umgekehrtes graues „-“ angezeigt wird. Wenn Sie darauf klicken, werden das Element und alle seine untergeordneten Elemente entfernt. Wenn Sie den Eintrag lieber zuerst prüfen möchten, klicken Sie auf das graue Dreieck (das Benutzern der Listenansicht im Finder bekannt ist) 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 zurück in Terminal wie folgt vor:
mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root#
Drücken Sie die Aufwärtspfeiltaste zweimal, um den chmod-Befehl erneut aufzurufen, ctrl-Aund gehen Sie etwa achtmal zum Zeilenanfang. cursor-rightÄndern Sie das „+“ in ein „-“ oder geben Sie Folgendes wie gezeigt ein, um die Berechtigungen wiederherzustellen:
mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist
dann HUPen Sie den Location Daemon:
mini-nevie:~ root# killall -HUP locationd
Eine schnelle Überprüfung der Registerkarte „Datenschutz“ von Security.PrefPane sollte Ihre Änderungen bestätigen.
Besonders zutreffend sind die üblichen Haftungsausschlüsse, warnenden Leidensgeschichten, Schimpfwörter, Gegacker und Überlegungen zum Thema „Ist diese Reise wirklich notwendig?“.
Antwort2
Verwenden von tccutil (OS X-Befehlszeilenprogramm)
Ich denke, der schnellste und sicherste Weg, dies zu tun, ist über das OS X-Befehlszeilenprogrammtccutil
- Öffnen Sie ein neues Terminalfenster
- Schließen Sie alle geöffneten Fenster im Einstellungsbereich „Sicherheit und 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
Zugriff auf Erinnerungen zurücksetzen
tccutil reset Reminders
Zugriff auf Kalender zurücksetzen
tccutil reset Calendar
Und das ist alles. Übrigens ist kein Sudo erforderlich.
Antwort3
Dies ist die alte Lösung und die von mir vorgeschlagene Lösung unterscheidet sich technisch nicht von der Lösung im Beitrag und der akzeptierten Lösung, aber sie ist viel weniger umständlich und viel einfacher zu automatisieren (nützlich für das Debuggen). Machen Sie einfach
/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd
als root.
Antwort4
Zusätzlich zu den vorherigen Antworten war dieses Problem bei mir erst nach der Korrektur der Dateieigentümerschaft behoben:
# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist
Starten Sie anschließend den Computer neu.