通过命令行控制防火墙来实现的
限制 uid为1001的app访问wifi的脚本为
#!/system/bin/sh
service iptables start
iptables -t filter -F OUTPUT
iptables -t filter -A OUTPUT -o tiwlan+ -m owner --uid-owner 1001 -j REJECT || exit
iptables -t filter -A OUTPUT -o wlan+ -m owner --uid-owner 1001 -j REJECT || exit
iptables -t filter -A OUTPUT -o eth+ -m owner --uid-owner 1001 -j REJECT || exit
exit
---------------------
-t table
这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)
-F -flush
清空所选链。这等于把所有规则一个个的删除。
-A -append
在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换为多个地址时,这条规则会加到所有可能的地址(组合)后面。
-o --out-interface [!][name]
-o --输出接口[名称]
这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)那么将匹配所有任意接口。
--uid-owner userid
如果给出有效的user id,那么匹配它的进程产生的包。
-j 目标跳转
指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标,或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加。