2

管理者権限を必要とするユーザーのオペレーティングシステム上のファイルを変更するCocoaアプリケーションを構築しています。私は使用する概念実証が機能していますauthopenが、それは私が達成したいと思っているUXエクスペリエンスを提供しません。ファイルが変更されるたびに、ユーザーにパスワードの入力を求められます。アプリケーションの存続期間中、アプリケーションにアクセス許可を付与する方法はありますか?

目標: アプリケーションはユーザーにパスワードを1回要求しますがアプリケーションがパスワードを要求することはありません。

次善の策:アプリケーションは、アプリケーションの起動時に 一度ユーザーにパスワードを要求します。アプリケーションが再起動するまで、アプリケーションはパスワードの入力を求めません。

私は承認サービスと、特権ファイルの変更を具体的に処理するデーモンを作成する可能性を認識しています。私が興味を持っているのは、別のシステムに深く入り込む前に、リストされた目標のいずれかが可能かどうかです。

提案、批評、役立つリンクを本当に感謝します。

乾杯、ダスティン

4

1 に答える 1

2

はい、承認サービスを使用することは前進の道です。AuthorizationCopyRights()(必要に応じてUIを表示)を介してアプリケーションでAuthorizationRefを取得し、これをヘルパーに渡して(外部フォームにパッケージ化することにより)、特権タスクを実行する前に実際に必要なものを取得したことを確認します。Authorization Servicesは/etc/authorizationデータベースに権限を登録できるため、カスタム権限を選択した場合は、取得を許可するユーザー、タイムアウトなどの条件などのデフォルト設定を選択できます。

特権ヘルパーツールをデプロイするには、特に、ヘルパーをジョブSMJobBless()としてデプロイする前に、クライアントとヘルパーのコード署名IDが一致することを確認するサービス管理フレームワークを使用する必要があります。launchd次に、メインアプリケーションからオンデマンドでヘルパーを開始できます。

回答のいずれかのステップについて説明が必要かどうかを自由に尋ねてください。ただし、特権分離のこれらの側面の両方については、私の著書Professional Cocoa Application Securityですでに書いているので、1、2部購入してください;-)。

于 2010-10-20T15:08:24.403 に答える