私は dd を使用する必要があるアプリに取り組んでいます (アプリ自体からパラメーターを収集し、いくつかのチェックを行ってから dd を起動する、アプリ バンドル内のシェル スクリプトを使用してこれを行います)。
この操作を行うには、ルートで dd を呼び出す必要があります。StackOverflow でいくつかのソリューションを既に見ました。実装するのが最も簡単なのは、これhttp://www.sveinbjorn.org/STPrivilegedTaskのように思えました
問題は、私の NSTask がいくつかの複雑な読み取り/書き込み操作を行い (STPrivilegedTask には存在しない)、すべての特権を必要としないことです。
そこで、アプリから正しいパラメーターを使用してスクリプトを呼び出す小さなヘルパー ツールを c で作成しました。私が考えた解決策は、STPrivilegedTask を使用して、小さなヘルパー ツールをフライしたら SUID にすることです。これにより、root でそれ (およびスクリプトと dd) を起動し、起動が成功した直後に、ヘルパー ツールを非 SUID に戻します (エラーが発生した場合、アプリの終了時、アプリの開始時など、より安全にするために同じことを行います)。
完全ではないかもしれませんが、すべてがバンドル内にあり、起動のためだけに SUID のヘルパー ツールを使用することは十分に安全だと思います。
何かご意見は?
ありがとう!