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ファイルの場所です。また、段階的なプロセスを提供したいと考えました。

免責事項:これは私のために働いた。システムの適切なバックアップがあることを確認してください。このプロセスには、clients.plistファイルのバックアップが含まれますが、安全すぎることはありません。

1.ターミナルを起動し、ルートシェルにsudoします
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>

6. clients.plistファイルをバイナリに戻す
plutil -convert binary1 clients.plist

7.場所を特定して再起動する
killall locationd

アプリがまだ存在する場合は、次のようにPIDを決定した後、kill -9を使用してロケーションを再起動することを除いて、プロセスを再度実行します。PIDは、ps出力の2番目のフィールドです。

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

プロセスを2回実行して、一度に1つのアプリを削除しました。初めて、killallで十分でした。二度目はそうではなかった。何故かはわからない。locationdがキャッシュを保持し、clients.plistを再構築するように動作しました。これを言うのは、killallを実行した後、さらには再起動しても、エントリがclients.plistに追加されたからです。根本的な原因が何であれ、kill -9を使用して問題を解決しました。

問題が発生した場合は、元のファイルをコピーして、locationdを再起動します。
cp -p clients.plist.save clients.plist
killall locationd(またはkill -9メソッド)

これがお役に立てば幸いです。乾杯!


1
kill -HUPの方が信頼性が高い場合があります。デーモンにキャッシュをフラッシュして構成ファイルを再読み込みするように指示するのは、レガシーのkillシグナルです。killall -HUP locationdが機能することがわかります。他の強制終了が機能しなかった理由としては、新しく生成されたプロセスによってキャッシュファイルが読み取られずに残っていることが考えられます。
ネビンウィリアムズ

楽しい事実:この動作がHigh Sierraの前に存在したかどうかはわかりませんが、少なくともこのmacOSでは、環境設定ペインに存在しなくなったファイルをオフにすると、通常アプリはリストに表示しなくなります。しかし、この方法を使用して、削除されたと思われるこれらのアプリのいくつかが、実際にはまだリストにあり、表示されていないことを発見しました。
ドニエル

また、これに関する私の経験に基づいて注意する必要があります:私はこれを使用して、システム環境設定から私のApplescriptを削除しようとしました これはApplescriptでそのコード行を実行しようとし続け、システム環境設定から削除されるまでbashがバックグラウンドで実行され続けたためであると考えられます...したがって、bashの次の行に進みました。私はこれらの複数をバックグラウンドで実行しているので、どうやら、これを行う間、それぞれを個別にキャンセルしなければならなかったようです。
ドニエル

回答:


5

Xcodeのプロパティリストエディターを使用して古いアプリのエントリを削除することもできますが、ファイルにアクセスするのが難しいため、アクセス許可を一時的に開く必要があります。

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

そのため、ディレクトリとファイルはすべてのユーザーが読み書きできます。次に、便宜上、ログインIDに対してsuを実行します。

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

これは、Xcodeが* .plistファイルを開くためのデフォルトアプリであり、プロパティリストエディターに精通していることを前提としています。ルートプロパティの下には、3つのデフォルトの辞書エントリがあります。

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

それらは削除されるべきではありません。古くなったアプリに属する​​エントリの場合、対応するアプリの行の[辞書]列のすぐ左にカーソルを合わせると、逆灰色の[-]が表示されます。それをクリックすると、アイテムとそのすべての子が削除されます。エントリを最初に調べたい場合は、キー文字列の左側にある灰色の三角形(Finderリスト表示ユーザーになじみのある)をクリックすると、辞書が展開され、その要素が表示されます。

必要に応じてキーを削除または無効にしたら、ファイルを保存してXcodeを終了します。次に、ターミナルに戻ります:

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

上向き矢印を2回押してchmodコマンドを呼び出し、ctrl-A行の先頭にcursor-right約8回移動し、「+」を「-」に変更するか、次のように入力して権限を元に戻します。

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

次に、ロケーションデーモンをHUPします。

 mini-nevie:~ root# killall -HUP locationd

Security.PrefPaneの[プライバシー]タブをすばやくチェックして、変更を確認する必要があります。

標準的な免責事項、悲惨な警告、sc責、鳴き声、および「この旅行は本当に必要ですか?」反射は特に適用可能です。


3

tccutilの使用(OS Xコマンドラインユーティリティ)

これを行うための最速かつ最も安全な方法は、OS Xコマンドラインユーティリティtccutilによるものだと思います

  • 新しいターミナルウィンドウを開く
  • 開いている「セキュリティとプライバシー」のprefpaneウィンドウをすべて閉じます
  • 以下の強調表示されたコマンドから入力または貼り付け

位置情報サービスをリセットする

tccutil reset CoreLocationAgent

連絡先/アドレス帳へのアクセスをリセットします。

tccutil reset AddressBook

リマインダーへのアクセスをリセット

tccutil reset Reminders

カレンダーへのアクセスをリセット

tccutil reset Calendar

そして、それだけです。ところで、Sudoは必要ありません。


残念ながら私のために働いていません。データベースのリセットに失敗しましたというメッセージが表示されます。
strangetimes

@strangetimes:私はこれを完全に忘れていました。このリンクに記載されている修正されたtccutilを試したことはありませんが、一見の価値があるようです: github.com/jacobsalmela/tccutil
アンドレアス

@strangetimes:github.com/jacobsalmela/tccutilによると、動作しない理由はシステムの整合性の保護によるものであることを忘れていました
Andreas

コマンドtccutil reset CoreLocationAgentはもう機能していないようです。この問題を参照してください。
nix

カレンダーを削除することはできましたが、新しい承認をリクエストすることはできません。私は、コンピュータを再起動し、ユーザ/ライブラリ/カレンダー/カレンダーキャッシュデータベースを削除しなければならなかったことを行うには
クリスティ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

その後、コンピューターを再起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.