Xóa ứng dụng khỏi Dịch vụ định vị trong Bảo mật & quyền riêng tư trên Mac OS X 10.8


20

Tôi muốn xóa ứng dụng khỏi các dịch vụ định vị trong cài đặt bảo mật và quyền riêng tư trên MaC OS X 10.8 Mountain Lion. (Các ứng dụng vẫn được liệt kê ngay cả khi chúng đã được gỡ cài đặt.) Tôi tìm thấy bài đăng Xóa ứng dụng khỏi Dịch vụ vị trí trong Bảo mật & quyền riêng tư trên Mac OS X 10.7 và điều đó đã đưa tôi đi đúng hướng. Đây là tương đương với OS X 10.8.2 Mountain Lion phù hợp với tôi. Sự khác biệt chính là vị trí của tệp client.plist. Tôi cũng muốn cung cấp một quy trình từng bước.

TUYÊN BỐ TỪ CHỐI: Điều này làm việc cho tôi. Hãy chắc chắn rằng bạn có một bản sao lưu tốt của hệ thống của bạn. Quá trình này bao gồm tạo một bản sao lưu của tệp client.plist, nhưng người ta không bao giờ có thể quá an toàn.

1. Bắt đầu thiết bị đầu cuối và sau đó sudo đến một vỏ gốc
sudo -s

2. Chuyển đến / var / db / locationd
cd /var/db/locationd

3. Tạo một bản sao lưu của tệp client.plist
cp -p clients.plist clients.plist.save

4. Chuyển đổi client.plist thành xml (định dạng có thể chỉnh sửa)
plutil -convert xml1 clients.plist

5. Sử dụng vi (vim) để chỉnh sửa tệp client.plist và xóa ứng dụng.
vi clients.plist

Các tập tin có thể sẽ chứa nhiều mục ứng dụng. Đây là định dạng của một mục ứng dụng duy nhất (Safari trong trường hợp này). Toàn bộ mục cần phải được xóa.

    <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. Chuyển đổi tệp client.plist trở lại nhị phân
plutil -convert binary1 clients.plist

7. Khởi động lại locationd
killall locationd

Nếu các ứng dụng vẫn còn ở đó, hãy thực hiện lại quy trình, ngoại trừ khởi động lại locationd bằng kill -9 sau khi xác định PID như sau. PID là trường thứ hai trong đầu ra ps.

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

Tôi đã chạy quá trình hai lần để xóa một ứng dụng cùng một lúc. Lần đầu tiên, killall là đủ. Lần thứ hai, nó đã không. Tôi không biết tại sao. Nó hoạt động giống như locationd đang giữ một bộ đệm và xây dựng lại client.plist. Tôi nói điều này bởi vì các mục đã được thêm lại vào client.plist sau khi chạy killall - và ngay cả khi khởi động lại. Dù nguyên nhân gốc rễ là gì, sử dụng kill -9 đã giải quyết vấn đề cho tôi.

Nếu mọi thứ trở nên tồi tệ, sau đó sao chép lại tệp gốc và khởi động lại locationd.
cp -p clients.plist.save clients.plist
killall locationd(hoặc phương thức kill -9)

Tôi hi vọng cái này giúp được. Chúc mừng!


1
giết -HUP có thể đáng tin cậy hơn; đó là tín hiệu tiêu diệt để bảo một daemon xóa bộ đệm và đọc lại tệp cấu hình của nó. Tôi thấy rằng killall -HUP locationd sẽ hoạt động. Một lý do có thể khiến các kill khác không hoạt động có thể là các tệp bộ nhớ cache được đọc bởi quá trình mới được sinh ra.
Nevin Williams

Sự thật thú vị: Tôi không chắc liệu hành vi này có tồn tại trước High Sierra hay không, nhưng ít nhất là trong macOS này nếu bạn bỏ chọn một tệp không còn tồn tại trong ngăn tùy chọn, thông thường ứng dụng sẽ không còn hiển thị trong danh sách nữa. Tuy nhiên, bằng cách sử dụng phương pháp này, tôi phát hiện ra rằng một số ứng dụng được cho là đã bị xóa trên thực tế vẫn còn trong danh sách, chỉ không được hiển thị.
DonielF

Tôi cũng cần lưu ý, dựa trên kinh nghiệm của tôi với điều này: Tôi đã thử sử dụng điều này để xóa một Applescript của tôi khỏi System Preferences, vì lý do, và nó tiếp tục bật lên rằng nó muốn vị trí của tôi trong vài lần thử cho đến khi cuối cùng nó im lặng. Tôi giả sử điều này là do tôi đã cố gắng chạy dòng mã đó trong Applescript và bash tiếp tục chạy trong nền cho đến khi nó bị xóa khỏi Tùy chọn hệ thống của tôi ... và do đó, nó đã chuyển sang dòng tiếp theo trong bash. Vì tôi có nhiều trong số này chạy trong nền, rõ ràng, tôi đã phải hủy từng cái một trong khi thực hiện điều này.
DonielF

Câu trả lời:


5

Trình chỉnh sửa danh sách thuộc tính của Xcode cũng có thể được sử dụng để xóa các mục nhập của ứng dụng cũ, nhưng vì tệp này khó truy cập, nên phải tạm thời mở quyền:

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

vì vậy thư mục và tập tin có thể được đọc và ghi bởi tất cả người dùng. Sau đó, để thuận tiện, hãy gửi ID đăng nhập của bạn:

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

Giả định Xcode này là ứng dụng mặc định để mở các tệp * .plist và bạn đã quen thuộc với Trình chỉnh sửa danh sách tài sản. Trong thuộc tính Root, có 3 mục từ điển mặc định:

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

Những người nên không được loại bỏ. Đối với các mục thuộc về các ứng dụng đã có từ lâu, bạn có thể di chuột ngay bên trái cột Từ điển của hàng ứng dụng tương ứng, nơi màu xám '-' sẽ xuất hiện. Nhấp vào nó sẽ loại bỏ các mục, và tất cả các con của nó. Nếu bạn muốn kiểm tra mục nhập trước, nhấp vào hình tam giác màu xám (quen thuộc với người dùng xem danh sách Finder) ở bên trái chuỗi khóa sẽ mở rộng Từ điển và hiển thị các thành phần của nó.

Khi bạn xóa hoặc vô hiệu hóa các phím để thỏa mãn, hãy lưu tệp và thoát Xcode. Sau đó, quay trở lại Terminal, làm:

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

nhấn mũi tên lên hai lần để gọi lại lệnh chmod, ctrl-Ađể đi đến đầu dòng, cursor-rightkhoảng tám lần, thay đổi '+' thành '-' hoặc nhập thông tin sau như được hiển thị để khôi phục quyền về những gì chúng là:

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

sau đó HUP vị trí daemon:

 mini-nevie:~ root# killall -HUP locationd

kiểm tra nhanh tab Bảo mật Security.PrefPane phải xác nhận các thay đổi của bạn.

Từ chối trách nhiệm tiêu chuẩn, những câu chuyện cảnh báo về sự đau khổ, những lời trách mắng, những lời nói dối và "Chuyến đi này có thực sự cần thiết?" phản ánh được đặc biệt áp dụng.


3

Sử dụng tccutil (tiện ích dòng lệnh OS X)

Tôi nghĩ rằng cách nhanh nhất và an toàn nhất để làm điều này là tiện ích dòng lệnh OS X tccutil

  • Mở một cửa sổ terminal mới
  • Đóng mọi cửa sổ prefpane "Bảo mật & Quyền riêng tư" đang mở
  • Nhập hoặc dán từ các lệnh được tô sáng sau đây

Đặt lại dịch vụ Vị trí

tccutil reset CoreLocationAgent

Đặt lại quyền truy cập vào danh bạ / sổ địa chỉ:

tccutil reset AddressBook

Đặt lại quyền truy cập vào Nhắc nhở

tccutil reset Reminders

Đặt lại quyền truy cập vào Lịch

tccutil reset Calendar

Và đó là tất cả những gì có. Nhân tiện, không cần Sudo.


Không làm việc cho tôi không may. Tôi nhận được thông báo thất bại để thiết lập lại thông báo cơ sở dữ liệu.
lạ lùng

@strangetimes: Tôi đã hoàn toàn quên mất điều này. Tôi chưa thử tccutil đã sửa đổi được đề cập trong liên kết này, nhưng dường như tôi thấy nó đáng để thử: github.com/jacobsalmela/tccutil
Andreas

@strangetimes: Tôi quên đề cập đến lý do nó không làm việc, là do sự bảo vệ toàn vẹn hệ thống, theo github.com/jacobsalmela/tccutil
Andreas

Lệnh tccutil reset CoreLocationAgentdường như không hoạt động nữa. Xem vấn đề này .
nix

Nó làm việc cho tôi để xóa lịch nhưng không hoạt động để yêu cầu ủy quyền mới. Để làm điều đó, tôi phải xóa cơ sở dữ liệu bộ đệm của người dùng / thư viện / lịch / lịch sau đó khởi động lại máy tính
Cristi Băluță

1

Đây là giải pháp cũ và giải pháp tôi đề xuất không khác biệt về mặt kỹ thuật so với giải pháp trong bài và được chấp nhận, nhưng nó ít rắc rối hơn và dễ tự động hóa hơn (hữu ích cho việc gỡ lỗi). Cứ làm đi

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

làm gốc.


Làm việc cho tôi. Cảm ơn!
dbv

0

Ngoài các câu trả lời trước đó, vấn đề này chỉ xảy ra với tôi sau khi sửa quyền sở hữu tệp:

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

Sau đó khởi động lại máy tính.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.