Quería eliminar aplicaciones de los servicios de ubicación en la configuración de seguridad y privacidad de MaC OS X 10.8 Mountain Lion. (Las aplicaciones todavía aparecían en la lista a pesar de que fueron desinstaladas). Encontré la publicaciónEliminar aplicación de Servicios de ubicación en Seguridad y privacidad en Mac OS X 10.7, y eso me llevó en la dirección correcta. Aquí está el equivalente de OS X 10.8.2 Mountain Lion que funcionó para mí. La principal diferencia es la ubicación del archivo client.plist. También quería proporcionar un proceso paso a paso.
DESCARGO DE RESPONSABILIDAD: Esto funcionó para mí. Asegúrese de tener una buena copia de seguridad de su sistema. Este proceso incluye hacer una copia de seguridad del archivo client.plist, pero nunca se puede estar demasiado seguro.
1. Inicie la terminal y luego sudo a un shell raíz
sudo -s
2. Vaya a /var/db/locationd
cd /var/db/locationd
3. Haga una copia de seguridad del archivo client.plist
cp -p clients.plist clients.plist.save
4. Convierta client.plist a xml (formato editable)
plutil -convert xml1 clients.plist
5. Utilice vi (vim) para editar el archivo client.plist y eliminar la aplicación.
vi clients.plist
Es probable que el archivo contenga muchas entradas de aplicaciones. Este es el formato de una única entrada de aplicación (Safari en este caso). Es necesario eliminar toda la entrada.
<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. Convierta el archivo client.plist nuevamente a binario.
plutil -convert binary1 clients.plist
7. Reiniciar ubicado
killall locationd
Si las aplicaciones aún están allí, vuelva a realizar el proceso, excepto que reinicie usando kill -9 después de determinar el PID de la siguiente manera. El PID es el segundo campo en la salida ps.
ps -ef | grep locationd | grep -v grep
Producción:205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427
Ejecuté el proceso dos veces para eliminar una aplicación a la vez. La primera vez, matar a todos fue suficiente. La segunda vez no fue así. Yo no sé por qué. Actuó como si Locationd estuviera manteniendo un caché y reconstruyendo clientes.plist. Digo esto porque las entradas se agregaron nuevamente a client.plist después de ejecutar killall, e incluso al reiniciar. Cualquiera que sea la causa raíz, usar kill -9 resolvió el problema por mí.
Si las cosas van mal, copie nuevamente el archivo original y reinicie.
cp -p clients.plist.save clients.plist
killall locationd
(o el método kill -9)
Espero que esto ayude. ¡Salud!
Respuesta1
El editor de lista de propiedades de Xcode también se puede utilizar para eliminar entradas de aplicaciones antiguas, pero como es difícil acceder al archivo, los permisos deben abrirse temporalmente:
mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
para que todos los usuarios puedan leer y escribir el directorio y el archivo. Luego, para mayor comodidad, acceda a su ID de inicio de sesión:
mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist
Esto supone que Xcode es la aplicación predeterminada para abrir archivos *.plist y que está familiarizado con el Editor de lista de propiedades. Bajo la propiedad Raíz, hay 3 entradas de Diccionario predeterminadas:
com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd
Esos no deberían eliminarse. Para las entradas que pertenecen a aplicaciones desaparecidas hace mucho tiempo, puede desplazarse justo a la izquierda de la columna Diccionario de la fila de la aplicación correspondiente, donde aparecerá un '-' gris inverso. Al hacer clic en él, se eliminará el elemento y todos sus elementos secundarios. Si prefiere inspeccionar la entrada primero, al hacer clic en el triángulo gris (familiar para los usuarios de vista de lista del Finder) a la izquierda de la cadena clave se expandirá el Diccionario y se mostrarán sus elementos.
Una vez que elimine o desactive las claves a su gusto, guarde el archivo y salga de Xcode. Luego, de vuelta en la Terminal, haz:
mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root#
presione la flecha hacia arriba dos veces para recuperar el comando chmod, ctrl-Apara ir al principio de la línea, cursor-rightaproximadamente ocho veces, cambie '+' por '-' o ingrese lo siguiente como se muestra para restaurar los permisos a lo que eran:
mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist
luego HUP el demonio de ubicación:
mini-nevie:~ root# killall -HUP locationd
una comprobación rápida de la pestaña Privacidad de Security.PrefPane debería confirmar los cambios.
Descargos de responsabilidad estándar, cuentos con moraleja sobre aflicciones, regaños, cloqueos y "¿Es este viaje realmente necesario?" Los reflejos son especialmente aplicables.
Respuesta2
Usando tccutil (utilidad de línea de comandos de OS X)
Creo que la forma más rápida y segura de hacer esto es mediante la utilidad de línea de comandos de OS X.tcutil
- Abrir una nueva ventana de terminal
- Cierre cualquier ventana abierta del panel previo de "Seguridad y privacidad"
- Escriba o pegue uno de los siguientes comandos resaltados
Restablecer los servicios de ubicación
tccutil reset CoreLocationAgent
Restablecer el acceso a contactos/libreta de direcciones:
tccutil reset AddressBook
Restablecer el acceso a Recordatorios
tccutil reset Reminders
Restablecer el acceso a los calendarios
tccutil reset Calendar
Y eso es todo. Por cierto, no se necesita Sudo.
Respuesta3
Esta es la solución anterior y la solución que propongo no es técnicamente diferente de la solución en la publicación y la aceptada, pero es mucho menos complicada y mucho más fácil de automatizar (útil para depurar). Solo haz
/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd
como raíz.
Respuesta4
Además de las respuestas anteriores, este problema solo desapareció después de corregir la propiedad del archivo:
# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist
Luego reinicie la computadora.