Удаление приложений из служб определения местоположения в разделе Безопасность и конфиденциальность в Mac OS X 10.8
Я хотел удалить приложения из служб определения местоположения в настройках безопасности и конфиденциальности на MaC OS X 10.8 Mountain Lion. (Приложения все еще были в списке, несмотря на то, что они были удалены.) Я обнаружил сообщение " Удалить приложение из Location Services" в разделе " Безопасность и конфиденциальность" в Mac OS X 10.7, и это заставило меня двигаться в правильном направлении. Вот OS X 10.8.2 Mountain Lion эквивалент, который работал для меня. Основным отличием является расположение файла clients.plist. Я также хотел представить пошаговый процесс.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это сработало для меня. Убедитесь, что у вас есть хорошая резервная копия вашей системы. Этот процесс включает в себя создание резервной копии файла clients.plist, но никто не может быть слишком безопасным.
1. Запустите терминал и затем sudo для корневой оболочки sudo -s
2. Перейдите в / var / db / locationd cd /var/db/locationd
3. Сделайте резервную копию файла clients.plist cp -p clients.plist clients.plist.save
4. Конвертируйте clients.plist в xml (редактируемый формат) plutil -convert xml1 clients.plist
5. Используйте vi (vim), чтобы отредактировать файл clients.plist и удалить приложение. vi clients.plist
Файл, вероятно, будет содержать много записей приложения. Вот формат одной записи приложения (в данном случае Safari). Вся запись должна быть удалена.
<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. Преобразуйте файл clients.plist обратно в двоичный файл. plutil -convert binary1 clients.plist
7. Перезапустите локацию killall locationd
Если приложения все еще там, выполните процесс снова, за исключением перезапуска locationd с использованием kill -9 после определения PID следующим образом. PID - это второе поле в выводе ps.
ps -ef | grep locationd | grep -v grep
Выход: 205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427
Я запустил процесс дважды, чтобы удалить одно приложение за раз. Первое время killall было достаточно. Во второй раз этого не было. Я не знаю почему. Он действовал так, как если бы locationd хранил кеш и перестраивал client.plist. Я говорю это потому, что записи были добавлены обратно в список clients.plist после запуска killall - и даже после перезагрузки. Независимо от первопричины, использование kill -9 решило проблему для меня.
Если что-то пойдет не так, скопируйте исходный файл и перезапустите его. cp -p clients.plist.save clients.plist
killall locationd
(или метод kill -9)
Надеюсь, это поможет. Ура!
5 ответов
Редактор списка свойств XCode также можно использовать для удаления записей старых приложений, но, поскольку к файлу трудно получить доступ, необходимо временно открыть разрешения:
mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
поэтому каталог и файл могут быть прочитаны и записаны всеми пользователями. Тогда, для удобства, введите ваш логин:
mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist
Это предполагает, что Xcode является приложением по умолчанию для открытия файлов *.plist, и вы знакомы с редактором списка свойств. Под свойством Root есть 3 словаря по умолчанию:
com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd
Они не должны быть удалены. Для записей, которые принадлежат давно ушедшим приложениям, вы можете навести курсор слева от столбца "Словарь" в строке соответствующего приложения, где появится обратный серый "-". Нажав на нее, вы удалите элемент и всех его детей. Если вы предпочитаете сначала проверить запись, щелкнув серый треугольник (знакомый пользователям в представлении списка Finder) слева от ключевой строки, разверните словарь и отобразите его элементы.
После того как вы удалите или отключите ключи, сохраните файл и выйдите из Xcode. Затем, вернувшись в Терминал, выполните:
mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root#
дважды нажмите стрелку вверх, чтобы вызвать команду chmod, ctrl-A, чтобы перейти к началу строки, курсор восемь раз вправо, изменить "+" на "-" или ввести следующее, как показано для восстановления разрешения на то, что они были:
mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist
тогда HUP демон локации:
mini-nevie:~ root# killall -HUP locationd
Быстрая проверка вкладки Security.PrefPane Privacy должна подтвердить ваши изменения.
Стандартные заявления об отказе от ответственности, предостерегающие истории о горе, ругательствах, хлопотах и "Действительно ли эта поездка необходима?" отражения особенно применимы.
Использование tccutil (утилита командной строки OS X)
Я думаю, что самый быстрый и безопасный способ сделать это, с помощью утилиты командной строки OS X tccutil
- Откройте новое окно терминала
- Закройте все открытые окна "Безопасность и конфиденциальность"
- Введите или вставьте из следующих выделенных команд
Сбросить службы определения местоположения
tccutil reset CoreLocationAgent
Сбросить доступ к контактам / адресной книге:
tccutil reset AddressBook
Сбросить доступ к напоминаниям
tccutil reset Reminders
Сбросить доступ к календарям
tccutil reset Calendar
И это все, что нужно сделать. Кстати, судо не нужно.
Это старое, и решение, которое я предлагаю, технически не отличается от решения в посте и принятого, но оно намного меньше хлопот и гораздо проще автоматизировать (полезно для отладки). Просто делать
/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd
как корень.
Удалите приложение из служб определения местоположения в разделе «Безопасность и конфиденциальность», щелкнув правой кнопкой мыши запись приложения, чтобы перейти в папку приложения. Закрыть Безопасность и конфиденциальность.
Команда терминала:
- sudo chown -R [ваш идентификатор Mac] /var/db/locationd (временно смените владельца на себя)
- plutil -convert xml1 /var/db/locationd/clients.plist (преобразовать двоичный список в текстовый список в формате XML)
- vi /var/db/locationd/clients.plist (Редактировать client.plist), чтобы перейти к начальной строке, и используйте команду «dd», чтобы стереть одну строку. Перемещайтесь вниз по строкам, пока пара клавиш-диктов записи вашего приложения не будет удалена.
- Перезагрузите Mac
PS: Нет необходимости снова менять владельца или конвертировать файл plist обратно в двоичный формат. Очень скоро ОС будет сброшена до владельца или формата по умолчанию.
В дополнение к предыдущим ответам эта проблема исчезла после исправления владения файлами:
# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist
Затем перезагрузите компьютер.