在 Mac OS X 10.8 的安全和隐私中从定位服务中删除应用程序

Sco*_*t S 23 system-preferences osx-mountain-lion location-services macos

我想在 Mac OS X 10.8 Mountain Lion 的安全和隐私设置中从定位服务中删除应用程序。(即使卸载了这些应用程序,它们仍然被列出。)我在 Mac OS X 10.7 的安全和隐私中找到了从定位服务中删除应用程序的帖子,这让我朝着正确的方向前进。这是对我有用的 OS X 10.8.2 Mountain Lion 等效版本。主要区别在于clients.plist 文件的位置。我还想提供一个循序渐进的过程。

免责声明:这对我有用。确保您有一个良好的系统备份。此过程包括对 clients.plist 文件进行备份,但永远不会太安全。

1. 启动终端,然后 sudo 到 root shell
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>
Run Code Online (Sandbox Code Playgroud)

6.将clients.plist文件转换回二进制
plutil -convert binary1 clients.plist

7.重启定位
killall locationd

如果应用程序仍然存在,请再次执行该过程,除非在确定 PID 后使用 kill -9 重新启动定位,如下所示。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 保持缓存并重建 clients.plist。我这样说是因为这些条目在运行 killall 之后被添加回 clients.plist —— 甚至在重新启动时。无论根本原因是什么,使用 kill -9 为我解决了问题。

如果出现问题,则将原始文件复制回并重新启动定位。
cp -p clients.plist.save clients.plist
killall locationd(或 kill -9 方法)

我希望这有帮助。干杯!

Nev*_*ams 5

Xcode 的属性列表编辑器也可以用来删除旧应用程序的条目,但由于文件很难访问,因此必须暂时打开权限:

mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
Run Code Online (Sandbox Code Playgroud)

所以目录和文件可以被所有用户读写。然后,为方便起见,su 到您的登录 ID:

mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist 
Run Code Online (Sandbox Code Playgroud)

这假设 Xcode 是打开 *.plist 文件的默认应用程序,并且您熟悉属性列表编辑器。在 Root 属性下,有 3 个默认的 Dictionary 条目:

com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd
Run Code Online (Sandbox Code Playgroud)

那些不应该被删除。对于属于早已消失的应用程序的条目,您可以将鼠标悬停在相应应用程序行的“词典”列的左侧,其中将出现一个反灰色的“-”。单击它会删除该项目及其所有子项。如果您想先检查条目,单击键字符串左侧的灰色三角形(Finder 列表视图用户熟悉)将展开字典并显示其元素。

删除或禁用您满意的键后,保存文件,然后退出 Xcode。然后,回到终端,执行:

mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root# 
Run Code Online (Sandbox Code Playgroud)

按两次向上箭头以调用 chmod 命令,ctrl-A转到该行的开头,cursor-right大约八次,将“+”更改为“-”,或按如下所示输入以下内容以恢复原来的权限:

mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist 
Run Code Online (Sandbox Code Playgroud)

然后 HUP 位置守护程序:

 mini-nevie:~ root# killall -HUP locationd
Run Code Online (Sandbox Code Playgroud)

快速检查 Security.PrefPane 隐私选项卡应该可以确认您的更改。

标准的免责声明、悲惨的警示故事、责骂、咯咯声和“这次旅行真的有必要吗?” 反射尤其适用。