![长话短说](https://linux22.com/image/71220/%E9%95%BF%E8%AF%9D%E7%9F%AD%E8%AF%B4.png)
我想通过USB网络接口模式通过IP在我的Android设备和我的Linux盒子之间进行通信。
我已将我的 Android 设备连接到我的 Linux 盒子,并通过一些 Java 反射黑客将 Android 设备置于网络接口模式。 (我没有在 Android 上使用标准网络共享设置,因为我想使用我的 Linux 盒子作为网关,而不是相反)。我曾经ip addr add
在两端(Linux 盒子和 Android 设备)添加一个 IP 地址,然后ip route
通过我的 Linux 盒子添加一条路由以访问互联网。我还在 Linux 盒子端启用了 IPv4 转发,并启用了所有必要的iptables
规则。
我的问题是:root
只能通过接口进行通信。例如,我的 Linux 盒子10.42.0.1
和 Android 设备通过10.42.0.2
USB 网络接口运行,ping 10.42.0.1
或者ping 8.8.8.8
在 Android 设备上运行,而无需从su
shell运行不管用。完美地运行与函数完全相同的命令root
。 Android 端通过 WiFi 接口执行的相同命令无需 root 即可正常运行。
我假设这是 Android 5.0 / 5.1 中实现的一些新安全功能,因为它在 KitKat 中运行良好。我在这里发布这个是因为我相信问题是由于内核中已打开的某些内容或其他非 Android 特有的内容造成的。由于我在网络方面没有太多经验,我希望有人能告诉我需要做什么来缓解这个问题。
答案1
其他网络功能是否有效?尝试telnet
从一台机器到另一台机器。如果您能够以 root 身份(而非非 root 身份)成功连接,则说明您遇到了问题。即使您作为 root 收到“连接被拒绝”(或类似的信息)和作为非 root 的“权限被拒绝”(或类似的信息),您也会遇到问题。
长话短说
如果其他网络功能以非 root 身份工作,那么您可能不会真正遇到问题。该ping
程序使用 ICMP 协议,该协议的使用仅限于 root。因此,ping
程序通常安装setuid到root。做
ls -ld $(which root)
如果它不属于 root 和 setuid(---s--x--x
至少),则通过执行使其成为这样
chown根路径_平 修改4755路径_平
作为根。