Видаліть програми з служб локації в області безпеки та конфіденційності на Mac OS X 10.8


20

Я хотів видалити програми з служб локації в налаштуваннях безпеки та конфіденційності в MaC OS X 10.8 Mountain Lion. (Програми все ще були в списку, хоча вони були видалені.) Я знайшов пост Видалити додаток із служб локації в службі Безпека та конфіденційність на Mac OS X 10.7 , і це мене змусило рухатись у правильному напрямку. Ось OS X 10.8.2 Mountain Lion еквівалент, який працював на мене. Основна відмінність - розташування файлу clients.plist. Я також хотів забезпечити покроковий процес.

ВІДМОВА: Це працювало для мене. Переконайтеся, що у вас є гарне резервне копіювання вашої системи. Цей процес включає створення резервної копії файла client.plist, але він ніколи не може бути занадто безпечним.

1. Запустіть термінал, а потім судо до кореневої оболонки
sudo -s

2. Перейдіть до / var / db / locationd
cd /var/db/locationd

3. Зробіть резервну копію файлу client.plist
cp -p clients.plist clients.plist.save

4. Перетворити client.plist у xml (редагований формат)
plutil -convert xml1 clients.plist

5. Використовуйте vi (vim) для редагування файлу client.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. Перетворіть файл client.plist назад у двійковий
plutil -convert binary1 clients.plist

7. Перезавантажте локаціюі
killall 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

Я двічі запускав процес, щоб видалити одну програму за раз. Першого разу кіллала було достатньо. Вдруге цього не було. Я не знаю чому. Це діяло так, що locationd зберігає кеш і відновлює client.plist. Я говорю це тому, що записи були додані назад до clients.plist після запуску killall - і навіть при перезавантаженні. Незалежно від першопричини, використовуючи kill -9 вирішив проблему для мене.

Якщо справи йдуть погано, скопіюйте назад оригінальний файл та перезапустіть loctiond.
cp -p clients.plist.save clients.plist
killall locationd(або метод kill -9)

Я сподіваюся, що це допомагає. Ура!


1
kill -HUP може бути більш надійним; це застарілий сигнал вбити, щоб сказати демону, щоб очистити кеш і перечитати його конфігураційний файл. Я бачу, що локалізація killall -HUP працює. Можливою причиною того, що інші вбивства не спрацювали, може бути те, що кеш-файли залишилися для читання заново створеним процесом.
Невін Вільямс

Факт забави: я не впевнений, чи існувала така поведінка до High Sierra, але принаймні у цьому macOS, якщо ви зніміть прапорці з файлу, який більше не існує на панелі налаштувань, зазвичай додаток більше не відображатиме його у списку. Однак, використовуючи цей метод, я виявив, що кілька цих нібито видалених додатків насправді досі перебувають у списку, просто не відображаються.
DonielF

Я також повинен зазначити, виходячи з мого досвіду з цим: я спробував використовувати це для того, щоб видалити мій Applescript з Системних налаштувань з причин, і він постійно з'являвся, що хотів, щоб моє місце розташування було кілька спроб, поки він остаточно не закрився. Я припускаю, що це тому, що я намагався запустити цей рядок коду в Applescript, і bash продовжував працювати у фоновому режимі, поки його не видалили з моїх системних налаштувань ... і, таким чином, він перейшов до наступного рядка в bash. Оскільки я мав декілька таких робіт у фоновому режимі, мабуть, мені довелося скасувати кожен окремо, роблячи це.
DonielF

Відповіді:


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

Ті не повинні бути видалені. Для записів, які належать давно відібраним програмам, ви можете навести курсор праворуч від стовпця Словник у відповідному рядку додатка, де з’явиться зворотний сірий '-'. Натиснувши на нього, вилучите предмет і всіх його дітей. Якщо ви бажаєте спочатку ознайомитись із записом, натискання на сірий трикутник (знайомий користувачам, який переглядає список шукачів) ліворуч від рядка клавіш розширить Словник та відобразить його елементи.

Після видалення або відключення ключів на ваше задоволення збережіть файл і закрийте Xcode. Потім, повернувшись до Терміналу, зробіть:

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

двічі натисніть стрілку вгору, щоб згадати команду chmod ctrl-A, cursor-rightприблизно вісім разів перейти до початку рядка, змінити "+" на "-" або ввести наступне, як показано для відновлення дозволів на те, що вони були:

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

то HUP демон розташування:

 mini-nevie:~ root# killall -HUP locationd

швидка перевірка вкладки Privacy.PrefPane Privacy повинна підтвердити ваші зміни.

Стандартні відмови від відповідальності, застережливі казки про горе, лайки, чмокання та "Чи справді ця поїздка потрібна?" роздуми особливо застосовні.


3

Використання tccutil (утиліта командного рядка OS X)

Я думаю, що найшвидший і безпечний спосіб це зробити - це утиліта командного рядка OS X tccutil

  • Відкрийте нове вікно терміналу
  • Закрийте будь-які відкриті вікна попереднього вікна "Безпека та конфіденційність"
  • Введіть або вставте з наступних виділених команд

Скидання послуг локації

tccutil reset CoreLocationAgent

Скинути доступ до контактів / адресної книги:

tccutil reset AddressBook

Скидання доступу до нагадувань

tccutil reset Reminders

Скидання доступу до календарів

tccutil reset Calendar

І це все є. До речі, жодне судо не потрібно.


На жаль, не працює для мене. Я отримую повідомлення про помилку скидання бази даних.
задухи

@strangasures: я зовсім забув про це. Я не спробував модифікованого tccutil, згаданого в цьому посиланні, але мені здається, що варто зняти: github.com/jacobsalmela/tccutil
Андреас

@strangasures: я забув зазначити, що причина, по якій вона не працює, пов’язана із захистом цілісності системи, відповідно до github.com/jacobsalmela/tccutil
Andreas

tccutil reset CoreLocationAgentЗдається, команда більше не працює. Дивіться це питання .
nix

Мені вдалося видалити календарі, але не працює над запитом на новий авторизацію. Для цього мені довелося видалити базу даних кешу користувача / бібліотеки / календаря / календаря, а потім перезавантажте комп'ютер
Cristi Băluță

1

Це старе, і рішення, яке я пропоную, технічно не відрізняється від рішення на посаді і прийняте, але набагато менше клопоту і набагато простіше автоматизувати (корисно для налагодження). Просто роби

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

як корінь.


Працює для мене. Спасибі!
dbv

0

Окрім попередніх відповідей, ця проблема пішла для мене лише після виправлення права власності на файл:

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

Потім перезавантажте комп'ютер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.