xiaoun001
2025 年 4 月 19 日
哎,给我倒腾半天,刚刚朋友说了个更好的方法,分享各位朋友:
安卓通过 root 权限控制应用联网
允许应用联网
iptables -I OUTPUT -m owner --uid-owner 安卓应用的 uid -j ACCEPT
禁止应用联网
iptables -I OUTPUT -m owner --uid-owner 安卓应用的 uid -j DROP
命令解释:
安卓的机制跟传统 linux 是不一样的,不能用传统 linux 那样直接通过端口或者应用进程来管控,而且安卓主要是以 system 用户身份控制这些操作,root 用户虽然权限比 system 更高,可是代码优先级不如 system,故而,咱们只能通过 root 后,调用 iptables 命令来管控安卓应用的联网权限,通过获取已经安装的应用程序 uid ,再结合 linux 下的禁用单个用户 uid 联网命令,即可达到禁用联网的目的。
因为安卓修改了 linux 传统内核,将 linux 传统的用户机制给修改了,安卓上把 0-9 和 1000 号,划为第一层用户,权限最高,包括 root 、dev 、proc 、shm 、system 等,第二层则是 1001-2000,这部分权限比上面低一些,能做的也十分有限,比如 adb shell,而普通用户开始的位置,根据不同安卓版本,而产生不同的起始数字,但是可以肯定的是,普通用户安装的软件起始 uid 肯定是一万以上开始起步。
安卓上也有多用户模式,不过只是 10-999 这个区间,在安卓 5.0 ( api21 )正式发布并且完善,可以通过 adb 命令
pm create-user
来实现创建用户
am start-user uid
实现启动用户
END