特別なファイルを作成し、それに魔法のクッキーを書き込む必要がある通常のコンパイル済みアプリケーションを書いています。アプリケーションから直接ファイルを書き込むことはできません。システムセキュリティモデルでは、トリックを実行するために昇格された特権でヘルパーツールを起動する必要があります。ヘルパーツールに任意の数の引数を指定できます。次に、ヘルパーツールとして機能し、ファイルを作成する非常に単純なシステムコマンドを選択します。このようなもの:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Simple touch
は、Cookieをファイルに書き込む必要があるため、カットしません。echo
シェルラッパーなしのSimple は、ファイルを書き込むためにリダイレクトが必要なため機能しません。そのような些細なタスクを実行するためにroot特権でシェルを呼び出すのは快適ではありません。ファイルを書き込むために呼び出すことができる本当にシンプルで制約のあるシステムコマンドはありますか?
tee
。ありがとう!
/bin/sh -c 'echo magic > /path/to/magic/file'
動作しない理由はありますか?これは、実行可能ファイルと2つの引数になります。最後の引数を文字列として構築する必要があります(sprintfまたは同等のものを使用)。これがうまくいかない理由はありますか?あなたの質問から、doCommandAsRoot()はコマンドにストリーミングするための入力を取らないように聞こえますよね?それ以外の場合は'cat > /path/to/magic/file'
、文字列を作成する代わりに、最後の引数を置き換えてデータを渡すことができます。