Rimuovi le applicazioni dai servizi di localizzazione in Sicurezza e privacy su Mac OS X 10.8


20

Volevo rimuovere le applicazioni dai servizi di localizzazione nelle impostazioni di sicurezza e privacy su MaC OS X 10.8 Mountain Lion. (Le app erano ancora elencate anche se sono state disinstallate.) Ho trovato il post Rimuovi applicazione dai servizi di localizzazione in Sicurezza e privacy su Mac OS X 10.7 , e questo mi ha portato nella giusta direzione. Ecco l'equivalente di OS X 10.8.2 Mountain Lion che ha funzionato per me. La differenza principale è la posizione del file client.plist. Volevo anche fornire un processo graduale.

NOTA BENE: Questo ha funzionato per me. Assicurati di avere un buon backup del tuo sistema. Questo processo include l'esecuzione di un backup del file client.plist, ma non si può mai essere troppo sicuri.

1. Avviare il terminale e quindi sudo su una shell di root
sudo -s

2. Vai a / var / db / locationd
cd /var/db/locationd

3. Effettuare un backup del file client.plist
cp -p clients.plist clients.plist.save

4. Converti client.plist in xml (formato modificabile)
plutil -convert xml1 clients.plist

5. Utilizzare vi (vim) per modificare il file client.plist e rimuovere l'applicazione.
vi clients.plist

Il file conterrà probabilmente molte voci dell'applicazione. Ecco il formato di una singola voce dell'applicazione (Safari in questo caso). L'intera voce deve essere cancellata.

    <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. Convertire il file client.plist nuovamente in binario
plutil -convert binary1 clients.plist

7. Riavvia posizioned
killall locationd

Se le app sono ancora lì, esegui di nuovo il processo, tranne riavviare locationd usando kill -9 dopo aver determinato il PID come segue. Il PID è il secondo campo nell'output ps.

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

Ho eseguito il processo due volte per rimuovere un'app alla volta. La prima volta, killall è stato sufficiente. La seconda volta non lo era. Non so perché. Ha funzionato come locationd stava mantenendo una cache e ricostruendo client.plist. Dico questo perché le voci sono state aggiunte di nuovo a clients.plist dopo aver eseguito killall - e anche al riavvio. Qualunque sia la causa principale, usando kill -9 ho risolto il problema per me.

Se le cose vanno male, copia nuovamente il file originale e riavvia locationd.
cp -p clients.plist.save clients.plist
killall locationd(o il metodo kill -9)

Spero che aiuti. Saluti!


1
kill -HUP potrebbe essere più affidabile; è il segnale di kill legacy per dire a un demone di svuotare la cache e rileggere il suo file di configurazione. Vedo che killall -HUP locationd funzionerebbe. Una possibile ragione per cui le altre uccisioni non hanno funzionato potrebbe essere che i file della cache sono stati lasciati per essere letti dal processo appena generato.
Nevin Williams,

Curiosità: non sono sicuro che questo comportamento esistesse prima di High Sierra, ma almeno in questo macOS se deselezioni un file che non esiste più nel riquadro delle preferenze, di solito l'app non lo visualizzerà più nell'elenco. Tuttavia, usando questo metodo, ho scoperto che molte di queste app presumibilmente eliminate erano, in realtà, ancora nell'elenco, semplicemente non visualizzate.
Doniel,

Dovrei anche notare, in base alla mia esperienza con questo: ho provato a usarlo per rimuovere un mio Applescript dalle Preferenze di Sistema, per motivi, e ha continuato a saltar fuori che voleva la mia posizione per diversi tentativi fino a quando non si è chiuso. Presumo che ciò sia dovuto al fatto che continuavo a provare a eseguire quella riga di codice in Applescript e che bash continuava a funzionare in background fino a quando non veniva eliminato dalle mie Preferenze di Sistema ... e quindi passava alla riga successiva in bash. Dal momento che ho avuto molti di questi in esecuzione in background, a quanto pare, ho dovuto cancellarli singolarmente mentre lo facevo.
Doniel,

Risposte:


5

L'editor dell'elenco delle proprietà di Xcode può anche essere utilizzato per eliminare le voci delle vecchie app, ma poiché il file è difficile da raggiungere, le autorizzazioni devono essere temporaneamente aperte:

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

così la directory e il file possono essere letti e scritti da tutti gli utenti. Quindi, per comodità, fai clic sul tuo ID di accesso:

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

Ciò presuppone che Xcode sia l'app predefinita per l'apertura dei file * .plist e che l'utente abbia familiarità con l'Editor elenco proprietà. Sotto la proprietà Root, ci sono 3 voci di dizionario predefinite:

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

Quelli non dovrebbero essere rimossi. Per le voci che appartengono ad app ormai lontane, puoi passare con il mouse a sinistra della colonna Dizionario della riga dell'app corrispondente, dove apparirà un '-' grigio inverso. Cliccandoci sopra rimuoverai l'oggetto e tutti i suoi figli. Se preferisci ispezionare prima la voce, facendo clic sul triangolo grigio (familiare agli utenti della visualizzazione elenco del Finder) a sinistra della stringa di chiave, il Dizionario verrà espanso e verranno visualizzati i suoi elementi.

Dopo aver eliminato o disabilitato le chiavi in ​​modo soddisfacente, salvare il file ed uscire da Xcode. Quindi, al Terminale, fai:

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

premi due volte la freccia su per richiamare il comando chmod, ctrl-Aper andare all'inizio della riga, cursor-rightcirca otto volte, cambia '+' in '-', oppure inserisci quanto segue come mostrato per ripristinare i permessi su ciò che erano:

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

quindi HUP il demone posizione:

 mini-nevie:~ root# killall -HUP locationd

un rapido controllo della scheda Privacy Security.PrefPane dovrebbe confermare le modifiche.

Dichiarazioni di non responsabilità standard, racconti cautelativi di guai, rimproveri, riserbo e "Questo viaggio è davvero necessario?" le riflessioni sono particolarmente applicabili.


3

Utilizzo di tccutil (utilità della riga di comando di OS X)

Penso che il modo più rapido e sicuro per farlo sia tramite l'utilità della riga di comando di OS X tccutil

  • Apri una nuova finestra del terminale
  • Chiudi tutte le finestre di prefpane "Sicurezza e privacy" aperte
  • Digita o incolla dai seguenti comandi evidenziati

Ripristina i servizi di localizzazione

tccutil reset CoreLocationAgent

Ripristina l'accesso ai contatti / alla rubrica:

tccutil reset AddressBook

Ripristina l'accesso ai promemoria

tccutil reset Reminders

Ripristina l'accesso ai calendari

tccutil reset Calendar

E questo è tutto quello che c'è da fare. A proposito, non è necessario il Sudo.


Purtroppo non funziona per me. Ottengo un messaggio di ripristino del database non riuscito.
strangetimes

@strangetimes: me ne ero completamente dimenticato. Non ho provato il tccutil modificato menzionato in questo link, ma mi sembra che valga la pena provare
Andreas

@strangetimes: ho dimenticato di dire che il motivo per cui non funziona, è dovuto alla protezione dell'integrità del sistema, secondo github.com/jacobsalmela/tccutil
Andreas

Il comando tccutil reset CoreLocationAgentnon sembra funzionare più. Vedi questo numero .
nix,

Ha funzionato per me per rimuovere i calendari ma non funziona per richiedere una nuova autorizzazione. Per fare ciò ho dovuto rimuovere il database cache utente / libreria / calendario / calendario quindi riavviare il computer
Cristi Băluță

1

Questa è la vecchia e la soluzione che propongo non è tecnicamente diversa dalla soluzione in post e accettata, ma è molto meno fastidiosa e molto più facile da automatizzare (utile per il debug). Basta fare

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

come radice.


Per me va bene. Grazie!
dbv,

0

Oltre alle risposte precedenti, questo problema è scomparso solo dopo aver corretto la proprietà del file:

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

Quindi riavviare il computer.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.