web-dev-qa-db-ja.com

Mac OS X 10.8のセキュリティとプライバシーの位置情報サービスからアプリケーションを削除する

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. locationdを再起動します
killall locationd

アプリがまだ存在する場合は、次のようにPIDを決定した後、kill -9を使用してlocationdを再起動することを除いて、プロセスを再度実行します。 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で十分でした。 2回目はそうではありませんでした。何故かはわからない。 locationdがキャッシュを保持し、clients.plistを再構築しているように機能しました。これは、killallを実行した後、さらには再起動時にもエントリがclients.plistに追加されたためです。根本的な原因が何であれ、kill -9を使用して問題を解決しました。

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

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

20
Scot S

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ファイルを開くためのデフォルトのアプリであり、プロパティリストエディターに精通していることを前提としています。 Rootプロパティの下には、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の[プライバシー]タブを簡単に確認すると、変更を確認できます。

標準の免責事項、悲惨な警告、叱責、ぎくしゃくした言葉、「この旅行は本当に必要ですか?」反射は特に当てはまります。

5
Nevin Williams

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

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

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

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

tccutil reset CoreLocationAgent

連絡先/アドレス帳へのアクセスをリセット:

tccutil reset AddressBook

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

tccutil reset Reminders

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

tccutil reset Calendar

これですべてです。ところで、Sudoは必要ありません。

3
Andreas

これは古いものであり、私が提案するソリューションは、投稿のソリューションと受け入れられたものと技術的に違いはありませんが、はるかに手間がかからず、自動化がはるかに簡単です(デバッグに役立ちます)。するだけ

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

ルートとして。

以前の回答に加えて、この問題は、ファイルの所有権を修正した後にのみ解消されました。

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

次に、コンピュータを再起動します。

0
T. Gil