Hapus Aplikasi dari Layanan Lokasi di Keamanan & Privasi di Mac OS X 10.8

20

Saya ingin menghapus aplikasi dari layanan lokasi di pengaturan keamanan dan privasi di MaC OS X 10.8 Mountain Lion. (Aplikasi masih terdaftar meskipun sudah dihapus.) Saya menemukan posting Hapus aplikasi dari Layanan Lokasi di Keamanan & Privasi di Mac OS X 10.7 , dan itu membuat saya pergi ke arah yang benar. Inilah OS X 10.8.2 yang setara dengan Mountain Lion yang berfungsi untuk saya. Perbedaan utama adalah lokasi file clients.plist. Saya juga ingin memberikan proses langkah demi langkah.

PENOLAKAN: Ini berhasil untuk saya. Pastikan Anda memiliki cadangan sistem yang baik. Proses ini termasuk membuat cadangan file clients.plist, tetapi orang tidak pernah bisa terlalu aman.

1. Mulai terminal dan kemudian sudo ke shell root
sudo -s

2. Pergi ke / var / db / locationd
cd /var/db/locationd

3. Buat cadangan file clients.plist
cp -p clients.plist clients.plist.save

4. Konversikan clients.plist ke xml (format yang dapat diedit)
plutil -convert xml1 clients.plist

5. Gunakan vi (vim) untuk mengedit file clients.plist dan menghapus aplikasi.
vi clients.plist

File tersebut kemungkinan akan berisi banyak entri aplikasi. Berikut adalah format entri aplikasi tunggal (Safari dalam kasus ini). Seluruh entri perlu dihapus.

    <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. Konversikan file clients.plist kembali ke biner
plutil -convert binary1 clients.plist

7. Mulai ulang lokasid
killall locationd

Jika aplikasi masih ada, lakukan proses lagi, kecuali restart locationd menggunakan kill -9 setelah menentukan PID sebagai berikut. PID adalah bidang kedua dalam output ps.

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

Saya menjalankan proses dua kali untuk menghapus satu aplikasi sekaligus. Pertama kali, killall sudah cukup. Kedua kalinya, tidak. Saya tidak tahu kenapa. Itu bertindak seperti locationd sedang menyimpan cache dan membangun kembali clients.plist. Saya mengatakan ini karena entri ditambahkan kembali ke clients.plist setelah menjalankan killall - dan bahkan pada reboot. Apapun akar masalahnya, menggunakan kill -9 memecahkan masalah bagi saya.

Jika semuanya berjalan buruk, salin kembali file asli dan mulai ulang lokasid.
cp -p clients.plist.save clients.plist
killall locationd(atau metode kill -9)

Saya harap ini membantu. Tepuk tangan!

Scot S.
sumber
1
kill -HUP mungkin lebih bisa diandalkan; itu adalah sinyal peninggalan lama untuk memberitahu daemon untuk membersihkan cache-nya dan membaca kembali file konfigurasinya. Saya melihat bahwa killall -HUP locationd akan bekerja. Kemungkinan alasan pembunuhan lainnya tidak berfungsi mungkin karena file cache dibiarkan untuk dibaca oleh proses yang baru saja terjadi.
Nevin Williams
Fakta menyenangkan: Saya tidak yakin apakah perilaku ini ada sebelum High Sierra, tetapi setidaknya di macOS ini jika Anda menghapus centang pada file yang tidak lagi ada di panel preferensi, biasanya aplikasi tidak akan lagi menampilkannya dalam daftar. Namun, dengan menggunakan metode ini, saya menemukan bahwa beberapa dari aplikasi yang seharusnya dihapus ini, pada kenyataannya, masih ada dalam daftar, tidak ditampilkan.
DonielF
Saya juga harus mencatat, berdasarkan pengalaman saya dengan ini: Saya mencoba menggunakan ini untuk menghapus Applescript milik saya dari System Preferences, karena alasan, dan terus bermunculan bahwa ia ingin lokasi saya untuk beberapa upaya sampai akhirnya ditutup. Saya berasumsi ini karena saya terus mencoba menjalankan baris kode dalam Applescript, dan bash terus berjalan di latar belakang sampai dihapus dari System Preferences saya ... dan dengan demikian ia melanjutkan ke baris berikutnya di bash. Karena saya memiliki beberapa dari ini berjalan di latar belakang, tampaknya, saya harus membatalkan masing-masing secara terpisah saat melakukan ini.
DonielF

Jawaban:

5

Editor daftar properti Xcode juga dapat digunakan untuk menghapus entri aplikasi lama, tetapi karena file sulit diakses, izin harus dibuka sementara:

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

sehingga direktori dan file dapat dibaca dan ditulis oleh semua pengguna. Kemudian, untuk kenyamanan, su ke ID login Anda:

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

Ini mengasumsikan Xcode adalah aplikasi default untuk membuka file * .plist, dan Anda terbiasa dengan Editor Daftar Properti. Di bawah properti Root, ada 3 entri Kamus default:

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

Mereka seharusnya tidak dihapus. Untuk entri yang termasuk dalam aplikasi yang sudah lama hilang, Anda dapat mengarahkan kursor ke sebelah kiri kolom Kamus dari baris aplikasi yang sesuai, tempat abu-abu terbalik '-' akan muncul. Mengkliknya akan menghapus item, dan semua anak-anaknya. Jika Anda lebih suka memeriksa entri terlebih dahulu, mengklik segitiga abu-abu (akrab bagi pengguna tampilan daftar Finder) di sebelah kiri string kunci akan memperluas Kamus dan menampilkan elemen-elemennya.

Setelah Anda menghapus atau menonaktifkan kunci untuk kepuasan Anda, simpan file, dan keluar dari Xcode. Kemudian, kembali di Terminal, lakukan:

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

tekan panah atas dua kali untuk mengingat perintah chmod, ctrl-Auntuk pergi ke awal baris, cursor-rightsekitar delapan kali, ubah '+' ke a '-', atau masukkan yang berikut ini seperti yang ditunjukkan untuk mengembalikan izin seperti apa adanya:

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

lalu HUP daemon lokasi:

 mini-nevie:~ root# killall -HUP locationd

pemeriksaan cepat tab Privacy.PrefPane Privacy harus mengkonfirmasi perubahan Anda.

Penafian standar, kisah peringatan akan celaka, omelan, celaan, dan "Apakah Perjalanan Ini Benar-Benar Diperlukan?" refleksi terutama berlaku.

Nevin Williams
sumber
3

Menggunakan tccutil (utilitas Baris Perintah OS X)

Saya pikir cara tercepat dan teraman untuk melakukan ini, adalah dengan tccutil utilitas baris perintah OS X

  • Buka jendela terminal baru
  • Tutup semua jendela prefpane "Keamanan & Privasi" yang terbuka
  • Ketik atau rekatkan dari perintah yang disorot berikut

Setel ulang layanan Lokasi

tccutil reset CoreLocationAgent

Atur ulang akses ke kontak / buku alamat:

tccutil reset AddressBook

Setel ulang akses ke Pengingat

tccutil reset Reminders

Setel ulang akses ke Kalender

tccutil reset Calendar

Dan hanya itu yang ada untuk itu. Omong-omong, tidak diperlukan Sudo.

Andreas
sumber
Sayangnya tidak bekerja untuk saya. Saya menerima pesan database gagal.
strangetimes
@ strangetimes: Saya benar-benar lupa tentang ini. Saya belum mencoba tccutil yang dimodifikasi yang disebutkan dalam tautan ini, tetapi bagi saya sepertinya layak dicoba: github.com/jacobsalmela/tccutil
Andreas
@strangetimes: Saya lupa menyebutkan bahwa alasan itu tidak berfungsi, adalah karena perlindungan integritas sistem, menurut github.com/jacobsalmela/tccutil
Andreas
Perintah tccutil reset CoreLocationAgentitu sepertinya tidak berfungsi lagi. Lihat masalah ini .
nix
Ini berhasil bagi saya untuk menghapus kalender tetapi tidak berfungsi untuk meminta otorisasi baru. Untuk melakukan itu saya harus menghapus basis data pengguna / perpustakaan / kalender / cache kalender kemudian restart komputer
Cristi Băluță
1

Ini adalah yang lama dan solusi yang saya usulkan tidak berbeda secara teknis dari solusi di pos dan diterima, tapi itu jauh lebih mudah dan lebih mudah untuk diotomatisasi (berguna untuk debugging). Lakukan saja

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

sebagai root.

Michael Krelin - hacker
sumber
Bekerja untukku. Terima kasih!
dbv
0

Selain jawaban sebelumnya, masalah ini hanya hilang untuk saya setelah mengoreksi kepemilikan file:

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

Kemudian nyalakan kembali komputer.

T. Gil
sumber