OS X アプリケーションの環境設定で管理者パスワードの入力を要求しないようにする

OS X アプリケーションの環境設定で管理者パスワードの入力を要求しないようにする

アプリケーション (具体的には waterroof) に何らかのアクションを送信する AppleScript を作成しようとしています。問題は、関心のある設定パネルを開くと、アプリケーションが定期的に管理者パスワードを要求することです。これは時間遅延で動作するため、過去 x 分以内にパスワードを入力した場合はプロンプトが表示されません。要求されることを当てにできないため、スクリプトの一部として一時停止してパスワードを入力することは検討できません。

管理者権限でアプリにログインしたままにしておきたいこと、また管理者権限を尋ねないようにアプリ/OS に伝える方法はありますか? コード内でその存在などを確認する前に、この可能性をすべて試してみたいと思います。

答え1

私の知る限り、OS Xでの認証のタイムアウトは(適切に行われていれば)ポリシーデータベース通常はプログラムによってに配置されますetc/authorization。これは plist ファイルのように見えますが、アイテムに 'timeout' キーがない場合、タイムアウトはありません。

この設定は通常、AppleのAPIを使用してコードで設定される(Appleの認可サービス プログラミング ガイドそしてその関数参照)。

これは保護されたファイルです。sudo pico /private/etc/authorization編集するには、 などを使用してください。

このファイル内のエントリには、一種の記述子「com.company.application.right」またはそれに類似するもの (例: com.apple.itunes.copy、com.stackexchange.superuser.deleteuser) を使用したタイトルが付けられます。これは各アプリケーションに固有のものなので、それを探してください。 (わかりやすくするためにアルファベット順に並んでいると思います)。

ここに画像の説明を入力してください

そのようなエントリがない場合、アプリはおそらく私が知らない別の方法で認証を取得します。私が作成したアプリにタイムアウトを追加してみましたが、うまくいきました。その後、もう一度削除すると、タイムアウトは消えました。あなたのケースでもうまくいくはずです。

設定パネルについては言及されていますが、それがシステム環境設定に関係するのであれば、私もそれがどのように機能するかわかりません。AppleScript を通じてそれを実行する方法はありません。

編集: そのようなエントリがない場合

アプリケーションが認証を行うもう 1 つの方法は、現在では非推奨で安全ではない方法 を使用することですAuthorizationExecuteWithPrivileges。アプリケーションがポリシー データベースに独自のエントリを持っていない場合は、 を使用すると思われますAuthorizationExecuteWithPrivileges。操作しようとしているアプリケーションがこれを使用している可能性があります。

ポリシー データベースには、この特定のメソッド用の というエントリがありますsystem.privilege.adminが、これを変更してタイムアウトを削除すると、変更しようとしAuthorizationExecuteWithPrivilegesているアプリケーションだけでなく、 を使用するすべてのアプリケーションのタイムアウトが変更される可能性があることに注意してください。試してみる価値はあるかもしれません。

ここに画像の説明を入力してください

関連情報