Root化されたAndroid端末でウェルノウンポートを使用する

投稿者: | 12月 23, 2023

はじめに

SMB、FTPのサーバをAndroid上で立てないと行けないシーンがあったので、その時のメモです。
Andoridはroot権限なしではウェルノウンポート(0~1023)が使用できません。root化済み端末でTermuxでsu -cコマンドを使用して、ウェルノウンポートでsambaサーバを建てようとしましたが、エラーでできなかったので諦めました。

方法

SMB、FTPサーバ自体は、1024以上のポート番号で立て、その後Root権限を使用したポートフォワーディングでウェルノウンポートと接続する感じです。
Termux(もしくはADB Shell)で実行するコマンドは、

su -c iptables -t nat -A PREROUTING -i インターフェース -p tcp --dport 公開したいウェルノウンポート -j REDIRECT --to-port 1024以上のポート番号

です。インターフェース名は、ip aや、ifconfigとかで把握できます。例えば、SSHポートはTermuxではディフォルトでは、8022ですが、以下を実行すれば22とかになります。

su -c iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-port 8022

自動セットアップ

先ほどのコマンドで設定したポートフォワーディングは再起動すると解消されていしまいます。そのため、起動時に自動でセットアップする必要があります。その時は、Termux:Bootを使用するといいです。インストールした後にTermuxのホームディレクトリで

vim .termux/boot/start_port.sh

を実行し、先ほど実行したコマンドを記述します。あとは、

chmod 775 .termux/boot/start_port.sh

で実行権限をつけてあげればあとは、起動時に自動でポートフォワーディングが設定されます。sshdとかを記述しておいてもいいかもしれません。

おまけ(Termux上でRootユーザとして、pkgでインストールしたプログラムを実行する方法)

そのままsu -cや、suで昇格してもパスが通ってないので見つからない、と言われて実行できません。
なので、パス(/data/data/com.termux/files/usr/bin)を通してやります。恒久的ではなく、ログアウトするまでなら、

su
PATH=$PATH:/data/data/com.termux/files/usr/bin
export PATH

でパスを通せます。この後に任意のTermux上のpkgでインストールしたプログラムRootユーザで実行できます。他のプログラムを呼び出さないものであれば、whichでパスを検索して、su -cで直接パスを指定して実行することもできます。

rootユーザとしてneofetchを実行

おわりに

自分は、MiXplorerのファイル共有機能を使用して、FTPとSMBサーバを立てています。Root化済みの端末でのTermuxは、普通のLinuxと同じように本当にいろいろできるので楽しいです。
AndroidでRoot権限奪取のことをRoot化って言うの今になって思うと違和感があるなぁ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)