3

1025 未満のポートでソケットを開くには、ルート アクセスが必要です。アプリケーションにこの権限を付与するにはどうすればよいですか? root アクセスを取得するためにシェルで su コマンドを実行できることは知っていますが、1025 未満のポートでソケットを開くために必要なことはそれだけですか? または、 su open socket 0.0.0.0:80 などのコマンドを実行する必要がありますか? これにはリソースがほとんどないので、私はとても混乱しています。Google がすべてのデバイスを事前にルート化しない目的は何ですか?

ルートアクセスを取得するために私ができることは次のとおりです。http://www.youtube.com/watch?v=jmfvX8zvsS0&list=UUk1SpWNzOs4MYmr0uICEntg&index=4&feature=plcp

編集:私はこれを書いた:

public class RootTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button = (Button)findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            String cmds[] = {"su", "-c", "ls /system/app"};
            Shell shell = new Shell();
            String text = shell.sendShellCommand(cmds);
            TextView textView = (TextView)findViewById(R.id.textView);
            textView.setText(text);
            try {
                ServerSocket socket = new ServerSocket(80);
                Log.d("Root", "Opened socket on port 80!!!");
            }catch(Exception e) {
                Log.d("Root", "Failed to open socket on port 80!!!");
                e.printStackTrace();
            }
        }

    });
  }
}

ボタンがクリックされると、コマンド su、-c、そして ls /system/app が実行されます。次に、出力を取得してテキストビューに表示します(これは実際に機能します。suプロンプトを取得してacceptを選択すると、/ system/apps /にすべてがリストされました)。しかしその後、ポート 80 でソケットを開こうとすると、依然としてアクセス許可が拒否されたと表示されます。アプリケーションは root アクセス権を持っていますが、まだソケットを開くことができません! logcat では、「ポート 80 でソケットを開くことができませんでした!!!」と出力されました。例外がキャッチされたときに行うように言ったように。許可を拒否せずにポート 80 でソケットを開くにはどうすればよいですか?

4

1 に答える 1

9

https://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on-port-80-as-a-normal-userに従って

このコマンドをルートとして実行しました:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

そしてそれは働いた!ポート 8080 でソケットを開き、ポート 80 で電話に接続すると、すべてのトラフィックが 8080 にリダイレクトされました。おお!

于 2012-05-24T06:33:45.117 に答える