Remova os aplicativos dos Serviços de Localização em Segurança e Privacidade no Mac OS X 10.8


20

Eu queria remover aplicativos dos serviços de localização nas configurações de segurança e privacidade no MaC OS X 10.8 Mountain Lion. (Os aplicativos ainda estavam listados, apesar de terem sido desinstalados.) Encontrei a postagem Remover aplicativo dos Serviços de Localização em Segurança e Privacidade no Mac OS X 10.7 e isso me levou a seguir a direção certa. Aqui está o equivalente ao 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. Verifique se você possui um bom backup do seu sistema. Esse processo inclui fazer um backup do arquivo customers.plist, mas nunca se pode ser muito seguro.

1. Inicie o terminal e, em seguida, sudo para um shell raiz
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 customers.plist para xml (formato editável)
plutil -convert xml1 clients.plist

5. Use o vi (vim) para editar o arquivo clients.plist e remover o aplicativo.
vi clients.plist

O arquivo provavelmente conterá muitas entradas de aplicativo. Aqui está o formato de uma única entrada de aplicativo (neste caso, o Safari). 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 novamente em binário
plutil -convert binary1 clients.plist

7. Reinicie o locald
killall locationd

Se os aplicativos ainda estiverem lá, faça o processo novamente, exceto reiniciar locationd 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. A primeira vez, killall foi suficiente. A segunda vez, não foi. Eu não sei porque. Ele agia como se o locationd estivesse mantendo um cache e reconstruindo o customers.plist. Digo isso porque as entradas foram adicionadas de volta ao customers.plist após a execução do killall - e até mesmo em uma reinicialização. Qualquer que seja a causa raiz, usar kill -9 resolveu o problema para mim.

Se tudo der errado, copie novamente o arquivo original e reinicie o locationd.
cp -p clients.plist.save clients.plist
killall locationd(ou o método kill -9)

Eu espero que isso ajude. Felicidades!


11
kill -HUP pode ser mais confiável; é o sinal de morte legado para dizer a um daemon para liberar seu cache e reler seu arquivo de configuração. Eu vejo que killall -HUP locationd funcionaria. Uma possível razão pela qual as outras mortes não funcionaram pode ser que os arquivos de cache foram deixados para serem lidos pelo processo recém-gerado.
Nevin Williams

Curiosidade: não tenho certeza se esse comportamento existia antes do High Sierra, mas pelo menos neste macOS, se você desmarcar um arquivo que não existe mais no painel de preferências, normalmente o aplicativo não o exibirá mais na lista. No entanto, usando esse método, descobri que vários desses aplicativos supostamente excluídos ainda estavam na lista, mas não foram exibidos.
precisa saber é o seguinte

Devo também observar, com base na minha experiência com isso: tentei usar isso para remover um Applescript meu das Preferências do Sistema, por motivos, e continuava aparecendo que queria minha localização por várias tentativas até que finalmente se calasse. Suponho que isso ocorre porque eu continuei tentando executar essa linha de código no Applescript, e o bash continuou em execução em segundo plano até ser excluído das minhas Preferências do Sistema ... e, portanto, passou para a próxima linha no bash. Como eu tinha várias delas em execução em segundo plano, aparentemente, tive que cancelar cada uma individualmente enquanto fazia isso.
DonielF

Respostas:


5

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 é o aplicativo padrão para abrir arquivos * .plist e você está familiarizado com o Editor de lista de propriedades. Sob a propriedade Raiz, existem 3 entradas padrão do Dicionário:

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

Aqueles não devem 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 será exibido. 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 da exibição em lista do Finder) à esquerda da sequência de teclas expandirá o Dicionário e exibirá seus elementos.

Depois de excluir ou desativar as chaves, salve o arquivo e feche o Xcode. Em seguida, 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 um '-' ou digite o seguinte, como mostrado, para restaurar as permissões para o que eram:

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

em seguida, HUP o daemon de localização:

 mini-nevie:~ root# killall -HUP locationd

uma verificação rápida da guia Privacidade do Security.PrefPane deve confirmar suas alterações.

Isenções de responsabilidade padrão, histórias de desgraça, xingamentos, risadas e "Esta viagem é realmente necessária?" reflexões são especialmente aplicáveis.


3

Usando tccutil (utilitário de linha de comando do OS X)

Eu acho que a maneira mais rápida e segura de fazer isso é através do utilitário de linha de comando do OS X, tccutil

  • Abra uma nova janela do terminal
  • Feche todas as janelas abertas da janela de segurança e privacidade
  • Digite ou cole dos 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 é só isso. A propósito, nenhum Sudo era necessário.


Infelizmente não estou trabalhando para mim. Recebo uma mensagem Falha ao redefinir o banco de dados.
strangetimes

@ Strangetimes: eu tinha esquecido totalmente disso. Eu não tentei o modificado tccutil mencionado neste link, mas parece-me que vale a pena um tiro: github.com/jacobsalmela/tccutil
Andreas

@strangetimes: Eu esqueci de mencionar que a razão ele não está funcionando, é devido à proteção da integridade do sistema, de acordo com github.com/jacobsalmela/tccutil
Andreas

O comando tccutil reset CoreLocationAgentparece não funcionar mais. Veja esta edição .
Nix

Ele trabalhou para remover os calendários, mas não está trabalhando para solicitar uma nova autorização. Para fazer isso, eu tive que remover o banco de dados de cache do usuário / biblioteca / calendário / calendário e reiniciar o computador.
Cristi Băluță

1

Este é o antigo e a solução que proponho não é tecnicamente diferente da solução do post 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.


Funciona para mim. Obrigado!
dbv 3/12

0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.