Supprimer des applications des services de localisation dans Sécurité et confidentialité sur Mac OS X 10.8

20

Je voulais supprimer des applications des services de localisation dans les paramètres de sécurité et de confidentialité de MaC OS X 10.8 Mountain Lion. (Les applications étaient toujours répertoriées même si elles étaient désinstallées.) J'ai trouvé le post Supprimer l'application des services de localisation dans Sécurité et confidentialité sur Mac OS X 10.7 , et cela m'a permis d'aller dans la bonne direction. Voici l'équivalent OS X 10.8.2 Mountain Lion qui a fonctionné pour moi. La principale différence est l'emplacement du fichier clients.plist. Je voulais également fournir un processus étape par étape.

AVERTISSEMENT: Cela a fonctionné pour moi. Assurez-vous d'avoir une bonne sauvegarde de votre système. Ce processus comprend la création d'une sauvegarde du fichier clients.plist, mais on ne peut jamais être trop sûr.

1. Démarrez le terminal, puis sudo vers un shell racine
sudo -s

2. Allez dans / var / db / locationd
cd /var/db/locationd

3. Faites une sauvegarde du fichier clients.plist
cp -p clients.plist clients.plist.save

4. Convertissez clients.plist en xml (format modifiable)
plutil -convert xml1 clients.plist

5. Utilisez vi (vim) pour modifier le fichier clients.plist et supprimer l'application.
vi clients.plist

Le fichier contiendra probablement de nombreuses entrées d'application. Voici le format d'une seule entrée d'application (Safari dans ce cas). L'entrée entière doit être supprimée.

    <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. Convertissez le fichier clients.plist en binaire
plutil -convert binary1 clients.plist

7. Redémarrez locationd
killall locationd

Si les applications sont toujours là, recommencez le processus, sauf redémarrez locationd en utilisant kill -9 après avoir déterminé le PID comme suit. Le PID est le deuxième champ de la sortie ps.

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

J'ai exécuté le processus deux fois pour supprimer une application à la fois. La première fois, le killall était suffisant. La deuxième fois, ce n'était pas le cas. Je ne sais pas pourquoi. Il agissait comme si locationd gardait un cache et reconstruisait clients.plist. Je dis cela parce que les entrées ont été ajoutées à clients.plist après avoir exécuté killall - et même lors d'un redémarrage. Quelle que soit la cause première, l'utilisation de kill -9 a résolu le problème pour moi.

Si les choses tournent mal, recopiez le fichier d'origine et redémarrez locationd.
cp -p clients.plist.save clients.plist
killall locationd(ou la méthode kill -9)

J'espère que ça aide. À votre santé!

Scot S
la source
1
kill -HUP pourrait être plus fiable; c'est le signal de mise à mort hérité pour dire à un démon de vider son cache et de relire son fichier de configuration. Je vois que killall -HUP locationd fonctionnerait. Une autre raison possible pour laquelle les autres éliminations n'ont pas fonctionné pourrait être que les fichiers de cache ont été laissés à la lecture par le processus nouvellement généré.
Nevin Williams
Fait amusant: je ne sais pas si ce comportement existait avant High Sierra, mais au moins dans ce macOS si vous décochez un fichier qui n'existe plus dans le volet des préférences, généralement l'application ne l'affichera plus dans la liste. Cependant, en utilisant cette méthode, j'ai découvert que plusieurs de ces applications prétendument supprimées étaient, en fait, toujours dans la liste, tout simplement pas affichées.
DonielF
Je devrais également noter, sur la base de mon expérience avec ceci: j'ai essayé d'utiliser ceci pour supprimer un de mes Applescript des Préférences Système, pour des raisons, et il a continué à apparaître qu'il voulait mon emplacement pendant plusieurs tentatives jusqu'à ce qu'il se ferme finalement. Je suppose que c'est parce que j'ai continué à essayer d'exécuter cette ligne de code dans l'Applescript, et que le bash a continué à fonctionner en arrière-plan jusqu'à ce qu'il soit supprimé de mes Préférences Système ... et qu'il est donc passé à la ligne suivante dans le bash. Étant donné que j'avais plusieurs de ces derniers en arrière-plan, apparemment, j'ai dû annuler chacun individuellement en faisant cela.
DonielF

Réponses:

5

L'éditeur de liste de propriétés de Xcode peut également être utilisé pour supprimer les entrées des anciennes applications, mais comme le fichier est difficile d'accès, les autorisations doivent être temporairement ouvertes:

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

afin que le répertoire et le fichier puissent être lus et écrits par tous les utilisateurs. Ensuite, pour plus de commodité, utilisez votre identifiant de connexion:

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

Cela suppose que Xcode est l'application par défaut pour ouvrir les fichiers * .plist et que vous connaissez l'éditeur de liste de propriétés. Sous la propriété Root, il y a 3 entrées de dictionnaire par défaut:

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

Cela ne devrait pas être supprimé. Pour les entrées qui appartiennent à des applications disparues depuis longtemps, vous pouvez passer la souris juste à gauche de la colonne Dictionnaire de la ligne de l'application correspondante, où un gris inversé «-» apparaîtra. Cliquez dessus pour supprimer l'élément et tous ses enfants. Si vous préférez d'abord inspecter l'entrée, cliquez sur le triangle gris (familier aux utilisateurs de la vue de liste du Finder) à gauche de la chaîne de clé pour développer le dictionnaire et afficher ses éléments.

Une fois que vous avez supprimé ou désactivé les clés à votre satisfaction, enregistrez le fichier et quittez Xcode. Ensuite, de retour dans Terminal, faites:

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

appuyez deux fois sur la flèche vers le haut pour rappeler la commande chmod, ctrl-Apour aller au début de la ligne, cursor-rightenviron huit fois, changez le «+» en «-», ou entrez ce qui suit comme indiqué pour restaurer les autorisations à ce qu'elles étaient:

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

puis HUP le démon de localisation:

 mini-nevie:~ root# killall -HUP locationd

une vérification rapide de l'onglet Confidentialité de Security.PrefPane devrait confirmer vos modifications.

Clauses de non-responsabilité standard, récits d'avertissement de malheur, réprimandes, gloussements et "Ce voyage est-il vraiment nécessaire?" les réflexions sont particulièrement applicables.

Nevin Williams
la source
3

Utilisation de tccutil (utilitaire de ligne de commande OS X)

Je pense que le moyen le plus rapide et le plus sûr de le faire est d' utiliser l' utilitaire de ligne de commande OS X tccutil

  • Ouvre une nouvelle fenêtre de terminal
  • Fermez toutes les fenêtres ouvertes du préfiltre «Sécurité et confidentialité»
  • Tapez ou collez à partir des commandes en surbrillance suivantes

Réinitialiser les services de localisation

tccutil reset CoreLocationAgent

Réinitialiser l'accès aux contacts / carnet d'adresses:

tccutil reset AddressBook

Réinitialiser l'accès aux rappels

tccutil reset Reminders

Réinitialiser l'accès aux calendriers

tccutil reset Calendar

Et c'est tout. Au fait, aucun Sudo n'était nécessaire.

Andreas
la source
Ne fonctionne pas pour moi malheureusement. Je reçois un message Échec de la réinitialisation de la base de données.
strangetimes
@ strangetimes: J'avais totalement oublié cela. Je n'ai pas essayé le tccutil modifié mentionné dans ce lien, mais il me semble que ça vaut le coup: github.com/jacobsalmela/tccutil
Andreas
@strangetimes: J'ai oublié de mentionner que la raison pour laquelle cela ne fonctionne pas est due à la protection de l'intégrité du système, selon github.com/jacobsalmela/tccutil
Andreas
La commande tccutil reset CoreLocationAgentne semble plus fonctionner. Voir ce numéro .
nix
Cela a fonctionné pour moi de supprimer les calendriers, mais ne fonctionne pas pour demander une nouvelle autorisation. Pour ce faire, j'ai dû supprimer la base de données de cache utilisateur / bibliothèque / calendrier / calendrier, puis redémarrer l'ordinateur
Cristi Băluță
1

C'est l'ancienne et la solution que je propose n'est pas techniquement différente de la solution dans la publication et acceptée, mais elle est beaucoup moins compliquée et beaucoup plus facile à automatiser (utile pour le débogage). Fais juste

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

en tant que root.

Michael Krelin - pirate
la source
Travaille pour moi. Merci!
dbv
0

En plus des réponses précédentes, ce problème ne s'est résolu pour moi qu'après avoir corrigé la propriété du fichier:

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

Redémarrez ensuite l'ordinateur.

T. Gil
la source