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 方法)
我希望这有帮助。干杯!
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 隐私选项卡应该可以确认您的更改。
标准的免责声明、悲惨的警示故事、责骂、咯咯声和“这次旅行真的有必要吗?” 反射尤其适用。
| 归档时间: |
|
| 查看次数: |
14422 次 |
| 最近记录: |