Eliminar aplicaciones de los servicios de ubicación en Seguridad y privacidad en Mac OS X 10.8

20

Quería eliminar aplicaciones de los servicios de ubicación en la configuración de seguridad y privacidad en MaC OS X 10.8 Mountain Lion. (Las aplicaciones todavía estaban en la lista a pesar de que se desinstalaron). Encontré la publicación Eliminar la aplicación de los 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 clients.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 clients.plist, pero uno nunca puede ser 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. Realice una copia de seguridad del archivo clients.plist
cp -p clients.plist clients.plist.save

4. Convierta clients.plist a xml (formato editable)
plutil -convert xml1 clients.plist

5. Use vi (vim) para editar el archivo clients.plist y eliminar la aplicación.
vi clients.plist

El archivo probablemente contendrá muchas entradas de aplicación. Aquí está el formato de una sola entrada de aplicación (Safari en este caso). La entrada completa necesita ser eliminada.

    <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 clients.plist a binario
plutil -convert binary1 clients.plist

7. Reiniciar locationd
killall locationd

Si las aplicaciones aún están allí, vuelva a realizar el proceso, excepto reiniciar ubicado 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
Salida: 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, Killall fue suficiente. La segunda vez, no fue así. No se por que. Actuó como locationd estaba manteniendo un caché y reconstruyendo clients.plist. Digo esto porque las entradas se agregaron nuevamente a clients.plist después de ejecutar killall, e incluso en un reinicio. Cualquiera sea la causa raíz, usar kill -9 resolvió el problema para mí.

Si las cosas salen mal, vuelva a copiar el archivo original y reinicie la ubicación.
cp -p clients.plist.save clients.plist
killall locationd(o el método kill -9)

Espero que esto ayude. ¡Aclamaciones!

Scot S
fuente
1
kill -HUP podría ser más confiable; es la señal de muerte heredada para decirle a un demonio que vacíe su caché y vuelva a leer su archivo de configuración. Veo que killall -HUP ubicado funcionaría. Una posible razón por la que los otros asesinatos no funcionaron podría ser que los archivos de caché se dejaron para ser leídos por el proceso recién generado.
Nevin Williams
Dato curioso: no estoy seguro de si este comportamiento existía antes de High Sierra, pero al menos en este macOS si desmarca un archivo que ya no existe en el panel de preferencias, generalmente la aplicación ya no lo mostrará en la lista. Sin embargo, usando este método, descubrí que varias de estas aplicaciones supuestamente eliminadas, de hecho, todavía estaban en la lista, simplemente no se mostraban.
DonielF
También debo señalar, en base a mi experiencia con esto: intenté usar esto para eliminar un Applescript mío de las Preferencias del Sistema, por razones, y seguía apareciendo que quería mi ubicación durante varios intentos hasta que finalmente se cerró. Supongo que esto se debe a que seguí intentando ejecutar esa línea de código en el Applescript, y el bash siguió ejecutándose en segundo plano hasta que se eliminó de mis Preferencias del Sistema ... y así pasó a la siguiente línea en el bash. Como tenía varios de estos ejecutándose en segundo plano, aparentemente, tuve que cancelar cada uno individualmente mientras hacía esto.
DonielF

Respuestas:

5

El editor de la lista de propiedades de Xcode también se puede usar para eliminar las entradas de aplicaciones antiguas, pero dado que 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, por conveniencia, ingrese 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 está familiarizado con el Editor de listas de propiedades. Debajo de la propiedad Root, hay 3 entradas de diccionario predeterminadas:

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

Esos no deben ser eliminados. Para las entradas que pertenecen a aplicaciones antiguas, puede pasar el mouse 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 primero la entrada, al hacer clic en el triángulo gris (familiar para los usuarios de la vista de lista del Finder) a la izquierda de la cadena de teclas se expandirá el Diccionario y mostrará sus elementos.

Una vez que elimine o deshabilite 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 el '+' a '-' 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 verificación rápida de la pestaña Security.PrefPane Privacy debería confirmar sus cambios.

Descargos de responsabilidad estándar, cuentos de advertencia sobre la aflicción, regaños, abucheos y "¿Es realmente necesario este viaje?" Las reflexiones son especialmente aplicables.

Nevin Williams
fuente
3

Uso de tccutil (utilidad de línea de comandos de OS X)

Creo que la forma más rápida y segura de hacerlo es mediante la utilidad de línea de comandos OS X tccutil

  • Abrir una nueva ventana de terminal
  • Cierre todas las ventanas de panel abierto "Seguridad y privacidad" abiertas
  • Escriba o pegue de los siguientes comandos resaltados

Restablecer los servicios de ubicación

tccutil reset CoreLocationAgent

Restablecer acceso a contactos / libreta de direcciones:

tccutil reset AddressBook

Restablecer acceso a recordatorios

tccutil reset Reminders

Restablecer acceso a calendarios

tccutil reset Calendar

Y eso es todo. No se necesita Sudo, por cierto.

Andreas
fuente
No funciona para mí desafortunadamente. Recibo un mensaje de error al restablecer la base de datos.
extraña veces
@strangetimes: me había olvidado por completo de esto. No he probado el tccutil modificado mencionado en este enlace, pero me parece que vale la pena intentarlo
Andreas
@strangetimes: olvidé mencionar que la razón por la que no funciona, se debe a la protección de la integridad del sistema, de acuerdo con github.com/jacobsalmela/tccutil
Andreas
El comando tccutil reset CoreLocationAgentya no parece funcionar. Ver este número .
nix
Me funcionó para eliminar los calendarios, pero no funciona para solicitar una nueva autorización. Para hacerlo, tuve que eliminar la base de datos de caché de usuario / biblioteca / calendario / calendario y luego reiniciar la computadora
Cristi Băluță
1

Esta es la antigua 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 la depuración). Solo haz

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

como raíz

Michael Krelin - hacker
fuente
Funciona para mi. ¡Gracias!
dbv
0

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.

T. Gil
fuente