1

小さな診断 OSX プログラム (小さなメニュー トレイ アプリ) があり、これを顧客に提供する必要があります。プログラムは dtrace を使用します。そのため、MacOS ディレクトリに、suid ビットが設定され、所有権が root:wheel に設定された補助実行可能ファイルがあります。ヘルパーの唯一の役割は、含まれている dtrace スクリプトを使用して dtrace にすぐに exec() を実行することです。

私の問題は、これを顧客に届ける良い方法がわからないことです。素朴に .zip アーカイブに入れると、すべての特別なアクセス許可が消去されました。

DMG に入れようとすると、root:wheel の所有権が私のもの (ted:staff) にリセットされました。ファイルオブジェクトの所有権設定を尊重し始めるには、DMG で todiskutilを使用する必要があることがわかりました。enableOwnershipこれで、DMG 内で、ヘルパー プログラムに必要な root:wheel および +s suid 権限が設定されていることがわかります。

しかし、アプリ バンドルを DMG からデスクトップにドラッグ アンド ドロップすると、権限が再びリセットされることがわかりました。さらに、DMG からアプリケーションを実行しようとすると、ヘルパー プログラムに suid ビットが設定されていないかのように動作します。

これを少し振り返ると、なぜこれが機能するのかまったくわかりません。開発者がこのように suid ビットを設定したアプリ バンドルを配布できるようにすることは、厄介で非常に明白なセキュリティ ホールのようです。

では、これはどのように行われるのでしょうか。パッケージインストーラーは必要ですか? それはsuidビットを保持しますか?誰かがこれがどのように機能するかを教えてくれますか?

4

2 に答える 2

2

(これを行う簡単な方法があれば) 厄介なセキュリティ ホールになることは間違いありません。管理者の承認手順を経ずに setuid root 実行可能ファイルを作成/インストールすることはできません。実際、所有権が自分以外のユーザーに設定されたファイルを作成/インストールすることさえできないはずです。

(実際には、10.9 には例外があります。App Store では、管理者権限なしでアプリをインストールできます。しかし、Apple はアプリがストアで許可される前に審査するため、比較的安全であると考えられています。)

これを行う「正しい」方法は、パッケージ インストーラーを使用することです。インストールの管理者権限を要求するように設定し、それを使用して、必要な所有権と権限 (setuid ビットを含む) でファイルをインストールできます。

于 2014-04-14T21:11:42.300 に答える
0

おそらく、.tarファイルを使用するとうまくいくでしょう。これらは、所有権などの UNIX 固有の手荷物をすべて保持するのに非常に優れており、フォルダやファイルに関連付けられています。

于 2016-06-09T01:58:40.610 に答える