Eu queria remover aplicativos dos serviços de localização nas configurações de segurança e privacidade do MaC OS X 10.8 Mountain Lion. (Os aplicativos ainda estavam listados, embora tenham sido desinstalados.) Encontrei a postagemRemova o aplicativo dos Serviços de Localização em Segurança e Privacidade no Mac OS X 10.7, e isso me fez seguir na direção certa. Aqui está o equivalente do OS X 10.8.2 Mountain Lion que funcionou para mim. A principal diferença é a localização do arquivo clients.plist. Eu também queria fornecer um processo passo a passo.
AVISO LEGAL: Isso funcionou para mim. Certifique-se de ter um bom backup do seu sistema. Este processo inclui fazer um backup do arquivo clients.plist, mas nunca é muito seguro.
1. Inicie o terminal e depois sudo para um shell root
sudo -s
2. Vá para /var/db/locationd
cd /var/db/locationd
3. Faça um backup do arquivo clients.plist
cp -p clients.plist clients.plist.save
4. Converta clients.plist em xml (formato editável)
plutil -convert xml1 clients.plist
5. Use vi (vim) para editar o arquivo clients.plist e remover o aplicativo.
vi clients.plist
O arquivo provavelmente conterá muitas entradas de aplicativos. Aqui está o formato de uma única entrada de aplicativo (Safari neste caso). A entrada inteira precisa ser excluída.
<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. Converta o arquivo clients.plist de volta para binário
plutil -convert binary1 clients.plist
7. Reinicie localizado
killall locationd
Se os aplicativos ainda estiverem lá, faça o processo novamente, exceto reiniciar localizado usando kill -9 após determinar o PID da seguinte maneira. O PID é o segundo campo na saída ps.
ps -ef | grep locationd | grep -v grep
Saída:205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427
Executei o processo duas vezes para remover um aplicativo por vez. Na primeira vez, killall foi suficiente. Na segunda vez, não foi. Eu não sei porque. Ele agia como se o locationd estivesse mantendo um cache e reconstruindo o clients.plist. Digo isso porque as entradas foram adicionadas de volta ao clients.plist após a execução do killall - e até mesmo durante uma reinicialização. Qualquer que seja a causa raiz, usar kill -9 resolveu o problema para mim.
Se tudo der errado, copie o arquivo original e reinicie o local.
cp -p clients.plist.save clients.plist
killall locationd
(ou o método kill -9)
Eu espero que isso ajude. Saúde!
Responder1
O editor de lista de propriedades do Xcode também pode ser usado para excluir entradas de aplicativos antigos, mas como o arquivo é difícil de acessar, as permissões precisam ser abertas temporariamente:
mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
para que o diretório e o arquivo possam ser lidos e gravados por todos os usuários. Então, por conveniência, digite seu ID de login:
mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist
Isso pressupõe que o Xcode seja o aplicativo padrão para abrir arquivos *.plist e que você esteja familiarizado com o Editor de lista de propriedades. Na propriedade Root, existem 3 entradas padrão do Dicionário:
com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd
Esses não deveriam ser removidos. Para entradas que pertencem a aplicativos antigos, você pode passar o mouse à esquerda da coluna Dicionário da linha do aplicativo correspondente, onde um '-' cinza inverso aparecerá. Clicar nele removerá o item e todos os seus filhos. Se você preferir inspecionar a entrada primeiro, clicar no triângulo cinza (familiar aos usuários do modo de exibição de lista do Finder) à esquerda da sequência de teclas expandirá o Dicionário e exibirá seus elementos.
Depois de excluir ou desativar as chaves de forma satisfatória, salve o arquivo e saia do Xcode. Então, de volta ao Terminal, faça:
mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root#
pressione a seta para cima duas vezes para recuperar o comando chmod, ctrl-Apara ir para o início da linha, cursor-rightcerca de oito vezes, altere o '+' para '-' ou digite o seguinte conforme mostrado para restaurar as permissões para o que eram:
mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist
então HUP o daemon de localização:
mini-nevie:~ root# killall -HUP locationd
uma verificação rápida na guia Security.PrefPane Privacy deve confirmar suas alterações.
Isenções de responsabilidade padrão, contos de advertência sobre desgraça, repreensões, cacarejos e "Esta viagem é realmente necessária?" reflexões são especialmente aplicáveis.
Responder2
Usando tccutil (utilitário de linha de comando do OS X)
Acho que a maneira mais rápida e segura de fazer isso é pelo utilitário de linha de comando do OS Xtccutil
- Abra uma nova janela de terminal
- Feche todas as janelas do pré-painel "Segurança e Privacidade" abertas
- Digite ou cole os seguintes comandos destacados
Redefinir os serviços de localização
tccutil reset CoreLocationAgent
Redefinir o acesso aos contatos/catálogo de endereços:
tccutil reset AddressBook
Redefinir o acesso aos Lembretes
tccutil reset Reminders
Redefinir o acesso aos calendários
tccutil reset Calendar
E isso é tudo. A propósito, não é necessário Sudo.
Responder3
Esta é a antiga e a solução que proponho não é tecnicamente diferente da solução postada e aceita, mas é muito menos complicada e muito mais fácil de automatizar (útil para depuração). Apenas faça
/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd
como raiz.
Responder4
Além das respostas anteriores, esse problema só desapareceu depois de corrigir a propriedade do arquivo:
# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist
Em seguida, reinicie o computador.