ファイルをインストールする権限を持つ Cydia アプリを作成しています。このためには、/Applications へのルート アクセスを取得できる必要があります。ここを見ましたが、ちょっとわかりにくかったです。誰かがそれをもう少しうまく説明できますか?
ありがとう!
システムを setuid で使用しないでください。たとえば、悪意のある人物が を に変更しPATH
、/tmp:$PATH
この人物が独自のプログラムを /tmp に追加して「ls」という名前を付けた場合、この単純なコードを実行しても、デバイスへのルート アクセスが許可されます。
setuid(0); system("ls");
代わりに、exec vp/execlp ではなく、exec ファミリの関数を使用する必要があります。
あなたはこれを使うことができます
setuid( 0 );
system( "/path/to/script.sh" );
スクリプトへのパスは、ファイルをインストールするアプリ内のスクリプトです。
また
setuid( 0 );
system( "cmd" );
ここで、cmdは次のようなコマンドです。
setuid( 0 ); system( "echo Hello World" );
この方法で、/tmp
ディレクトリまたはその他の場所にログを記録することもできます。
setuid( 0 ); system( "echo Hello World >> /tmp/install.log" );
setuid (0);
ルートアクセス権を与えsystem (cmd);
、実際のコマンドです
ルートはどこにでもアクセスできるため、これをどのように使用するかに注意してください。