

















我在 Android 设备(采用 armhf/x64 架构)的 chroot 环境中安装了 Ubuntu 。一切运行正常。所有本地命令以及 wget 和 curl 都能正常工作。然而,apt-get 却失败了。
我在 Android 设备(采用 armhf/x64 架构)的 chroot 环境中安装了 Ubuntu 。一切运行正常。所有本地命令以及 wget 和 curl 都能正常工作。然而,apt-get 却失败了。问题如下:
sudo apt-get update 时出现错误:解析 ports.ubuntu.com 暂时失败(其他程序如 wget 和 curl 能成功访问该域名)。我已通过 ping 命令获取了服务器 IP,并据此修改了 /etc/apt/sources.list 文件sudo apt-get update 又出现另一个错误:无法为 91.189.88.150 (f=2 t=1 p=6) 创建套接字 - 套接字 (13: 权限被拒绝)sudo chmod u+s /usr/bin/apt-*为排除特定 apt-get 版本的影响,我已通过 apt-get 自身卸载了 apt,并成功使用 dpkg 安装了 apt.deb 包,但问题依然存在。
Ubuntu上这个基本功能似乎失效了,这非常令人惊讶,可能是armhf架构包特有的问题。我在Stack Overflow上似乎找不到关于此问题的报告。不过,我在Reddit的 /r/debian 版块确实发现另一位用户报告了类似情况,但该问题尚未得到解决。
据我所知,在 Debian chroot 环境中使用 setsid 切换到 root 用户是行不通的,这是因为 Android 的安全策略(sepolicy)。也许 Android 的安全策略中有一条规则,例如:“要使用网络,必须拥有 inet 的组 ID(即 3003,如 adb shell id 所示)”。也许它还规定:“拥有 setsid root 权限是无效的”。
因此,要使之生效,你必须在 Debian chroot 环境中添加一个 GID 为 3003 的组(可能命名为 aid_inet):sudo addgroup --gid 3003 aid_inet,然后将 _apt 的主组 ID 更改为 aid_inet:sudo usermod -g aid_inet _apt。
将 android_inet 作为 _apt 的辅助组添加是行不通的,因为这不符合 Android 安全策略的要求。
addgroup --gid 3003 --system aid_inet
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。