Usuń aplikacje z usług lokalizacyjnych w obszarze Bezpieczeństwo i prywatność w systemie Mac OS X 10.8

20

Chciałem usunąć aplikacje z usług lokalizacyjnych w ustawieniach bezpieczeństwa i prywatności w MaC OS X 10.8 Mountain Lion. (Aplikacje nadal były na liście, mimo że zostały odinstalowane). Znalazłem wpis Usuń aplikację z usług lokalizacyjnych w obszarze Bezpieczeństwo i prywatność w systemie Mac OS X 10.7 , co pomogło mi pójść we właściwym kierunku. Oto odpowiednik OS X 10.8.2 Mountain Lion, który zadziałał dla mnie. Główną różnicą jest lokalizacja pliku client.plist. Chciałem też zapewnić proces krok po kroku.

ZASTRZEŻENIE: To zadziałało dla mnie. Upewnij się, że masz dobrą kopię zapasową systemu. Proces ten obejmuje wykonanie kopii zapasowej pliku client.plist, ale nigdy nie można być zbyt bezpiecznym.

1. Uruchom terminal, a następnie sudo do powłoki roota
sudo -s

2. Przejdź do / var / db / locationd
cd /var/db/locationd

3. Wykonaj kopię zapasową pliku client.plist
cp -p clients.plist clients.plist.save

4. Konwertuj client.plist na xml (format edytowalny)
plutil -convert xml1 clients.plist

5. Użyj vi (vim), aby edytować plik klient.plist i usuń aplikację.
vi clients.plist

Plik prawdopodobnie będzie zawierał wiele wpisów aplikacji. Oto format pojedynczego wpisu aplikacji (w tym przypadku Safari). Cały wpis musi zostać usunięty.

    <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. Konwertuj plik client.plist z powrotem na plik binarny
plutil -convert binary1 clients.plist

7. Uruchom ponownie lokalizację
killall locationd

Jeśli aplikacje nadal tam są, wykonaj ten proces ponownie, z wyjątkiem ponownego uruchomienia lokalizacji za pomocą kill -9 po określeniu PID w następujący sposób. PID jest drugim polem na wyjściu ps.

ps -ef | grep locationd | grep -v grep
Wydajność: 205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427

Uruchomiłem ten proces dwukrotnie, aby usunąć jedną aplikację na raz. Za pierwszym razem killall było wystarczające. Za drugim razem tak nie było. Nie wiem dlaczego. Działało to tak, jakby lokalizacja utrzymywała pamięć podręczną i odbudowywała listę klientów.pl. Mówię to, ponieważ wpisy zostały dodane z powrotem do client.plist po uruchomieniu killall - a nawet po ponownym uruchomieniu. Niezależnie od przyczyny, użycie kill -9 rozwiązało problem.

Jeśli coś pójdzie nie tak, skopiuj oryginalny plik i zrestartuj lokalizację.
cp -p clients.plist.save clients.plist
killall locationd(lub metoda kill -9)

Mam nadzieję, że to pomoże. Twoje zdrowie!

Scot S
źródło
1
kill -HUP może być bardziej niezawodny; jest to starszy sygnał zabicia, który informuje demona, aby wyczyścił pamięć podręczną i ponownie odczytał plik konfiguracyjny. Widzę, że lokalizacja killall -HUP działałaby. Możliwym powodem, dla którego inne zabicia nie działały, mogą być pliki pamięci podręcznej, które zostały odczytane przez nowo spawnowany proces.
Nevin Williams,
Ciekawostka: nie jestem pewien, czy takie zachowanie istniało przed High Sierra, ale przynajmniej w tym systemie macOS, jeśli usuniesz zaznaczenie pliku, którego już nie ma w panelu preferencji, zwykle aplikacja nie będzie go już wyświetlać na liście. Jednak korzystając z tej metody odkryłem, że kilka z tych rzekomo usuniętych aplikacji było w rzeczywistości nadal na liście, po prostu się nie wyświetlało.
DonielF
Powinienem również zauważyć, w oparciu o moje doświadczenia z tym: próbowałem tego użyć, aby usunąć mój Jabłkowy Skrypt z Preferencji Systemowych, z powodów, i wyskakiwało, że chciał mojej lokalizacji przez kilka prób, aż w końcu się zamknął. Zakładam, że dzieje się tak, ponieważ próbowałem uruchomić ten wiersz kodu w Applescript, a bash działał w tle, dopóki nie został usunięty z moich Preferencji systemowych ... i w ten sposób przeszedł do następnego wiersza w bash. Ponieważ miałem wiele z nich działających w tle, najwyraźniej musiałem anulować każdy z nich osobno, robiąc to.
DonielF,

Odpowiedzi:

5

Edytora list właściwości Xcode można również używać do usuwania wpisów starych aplikacji, ale ponieważ trudno jest uzyskać dostęp do pliku, uprawnienia należy tymczasowo otworzyć:

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

więc katalog i plik mogą być odczytywane i zapisywane przez wszystkich użytkowników. Następnie dla wygody użyj swojego identyfikatora logowania:

mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist 

Zakłada się, że Xcode jest domyślną aplikacją do otwierania plików * .plist i znasz Edytor list właściwości. We właściwości Root znajdują się 3 domyślne wpisy słownika:

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

Nie należy ich usuwać. W przypadku wpisów należących do aplikacji, które już dawno minęły, możesz najechać wskaźnikiem myszy na lewo od kolumny Słownik wiersza odpowiedniej aplikacji, gdzie pojawi się odwrotne szare „-”. Kliknięcie go usunie element i wszystkie jego elementy potomne. Jeśli wolisz najpierw sprawdzić wpis, kliknięcie szarego trójkąta (znanego użytkownikom widoku listy Findera) po lewej stronie ciągu klucza spowoduje rozwinięcie słownika i wyświetlenie jego elementów.

Po usunięciu lub wyłączeniu kluczy według własnego uznania zapisz plik i zamknij Xcode. Następnie w Terminalu wykonaj:

mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root# 

naciśnij dwukrotnie strzałkę w górę, aby przywołać komendę chmod, ctrl-Aaby przejść do początku wiersza, cursor-rightokoło osiem razy, zmienić „+” na „-” lub wprowadzić następujące polecenie, jak pokazano, aby przywrócić uprawnienia do tego, czym były:

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

następnie HUP demona lokalizacji:

 mini-nevie:~ root# killall -HUP locationd

szybkie sprawdzenie zakładki Prywatność Security.PrefPane powinno potwierdzić twoje zmiany.

Standardowe zrzeczenia się odpowiedzialności, przestrogi o nieszczęściu, besztanie, szczekanie i „Czy ta podróż jest naprawdę konieczna?” refleksje są szczególnie przydatne.

Nevin Williams
źródło
3

Korzystanie z tccutil (narzędzie wiersza polecenia OS X)

Myślę, że najszybszym i najbezpieczniejszym sposobem jest skorzystanie z narzędzia wiersza polecenia OS X tccutil

  • Otwórz nowe okno terminala
  • Zamknij wszystkie otwarte okna wstępnych okien „Bezpieczeństwo i prywatność”
  • Wpisz lub wklej następujące podświetlone polecenia

Zresetuj usługi lokalizacyjne

tccutil reset CoreLocationAgent

Zresetuj dostęp do kontaktów / książki adresowej:

tccutil reset AddressBook

Zresetuj dostęp do Przypomnień

tccutil reset Reminders

Zresetuj dostęp do kalendarzy

tccutil reset Calendar

I to wszystko. Nawiasem mówiąc, nie było potrzebne Sudo.

Andreas
źródło
Niestety nie działa dla mnie. Otrzymuję komunikat Nie udało się zresetować bazy danych.
strangetimes
@strangetimes: Zupełnie o tym zapomniałem. Nie próbowałem zmodyfikowanego tccutil wspomnianego w tym linku, ale wydaje mi się, że warto spróbować
Andreas
@strangetimes: Zapomniałem wspomnieć, że powodem, dla którego nie działa, jest ochrona integralności systemu, według github.com/jacobsalmela/tccutil
Andreas
Wydaje się, że polecenie tccutil reset CoreLocationAgentjuż nie działa. Zobacz ten problem .
nix
Udało mi się usunąć kalendarze, ale nie mogę poprosić o nową autoryzację. W tym celu musiałem usunąć bazę danych pamięci podręcznej użytkownika / biblioteki / kalendarza / kalendarza, a następnie ponownie uruchomić komputer
Cristi Băluță
1

To jest stare i proponowane przeze mnie rozwiązanie nie różni się technicznie od rozwiązania w poście i przyjętego, ale jest o wiele mniej kłopotliwe i łatwiejsze do zautomatyzowania (przydatne do debugowania). Po prostu zrób

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

jako root.

Michael Krelin - haker
źródło
Pracuje dla mnie. Dzięki!
dbv
0

Oprócz poprzednich odpowiedzi ten problem zniknął dla mnie dopiero po skorygowaniu własności pliku:

# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist

Następnie uruchom ponownie komputer.

T. Gil
źródło