2011-12-15 9 views
4

Xcodeでsystemコールを使用してrootとしてログインしたい。私はこれがNSTaskまたはNSPipeを使用して行われていることを知るようになったとき、私はそれをグーグルjailbroken iPhoneで、どうやってrootでコマンドを実行できますか?

System("su"); 
System("alpine"); 

または

System("su root"); 
System("alpine"); 

または

System("su root alpine"); 

:私は成功せずにこのコードを試してみてください。 NSTaskNSPipeを使用して複数のsystemコマンドを実行する方法を教えてもらえますか?

これを行う方法や別の方法について、いくつかのヒントを教えてください。私はjailbroken iPhoneでこのアプリケーションを使用しています。

詳細はhereです。

+1

マインド:それの

例は、パスワードを使用して1つのラインでの使用です。 – v1Axvw

+0

また、iOSはUnixオペレーティングシステムであることに注意してください。また、既存のプロセスにroot権限を与えることはできないと思います。新しいプロセスは、より高い権限でのみ起動できます。つまり、補助実行ファイルが必要です。 (あなたがrootとしてアプリケーションを再起動しない限り) – v1Axvw

+0

また、 'system()'では、コマンドラインシェルに渡したものと正確にタイプしたものと同じであることにも留意してください。 (入力を渡すために2回呼び出す必要はありません)。したがって、 'system(" alpine ")は正しいアプローチではありません。そして 'system()'( 'fork()'や 'exec()'と違って)では、子プロセスのI/Oを直接制御することはできません。 "rootとしてログオン"したら、正確に何をしようとしていますか?あなたがシェルを手に入れても、 'system()'はあなたのプロセスをハングアップさせ、シェルが終了するのを待ちます。示唆された読書: 'man 3 system'、 'man 2 fork'、' man 3 exec'。 – mpontillo

答えて

1

ルートとして何かを起動する場合は、sudoを使用してください。あなたが `/ Applications`でアプリケーションを置く場合は、すでにルートアプリの起動になるだろうということ

echo <password> | sudo -S <command> 
+0

これはもちろん、 'sudo'実行可能ファイルをデバイスにインストールする必要があります。 – v1Axvw

+1

あなたのiPhoneがjailbrokenなら、あなたはCydiaを使ってsudoをインストールするかもしれません。 – Dimme

+0

アプリケーションがCydiaを介して何らかのリポジトリを介してリリースされる予定の場合、sudoを依存関係として設定することができます。 – Dimme

関連する問題