Remova aplicativos dos serviços de localização em Segurança e privacidade no Mac OS X 10.8

Remova aplicativos dos serviços de localização em Segurança e privacidade no Mac OS X 10.8

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.

informação relacionada