升级到 Squeeze 后出现网络访问问题

升级到 Squeeze 后出现网络访问问题

我计划推出几台(约 100 台)Guruplug 展示机。

它们是在出厂时就已经安装了 Lenny。

我把所有东西都升级到了 Squeeze,但从那以后,每个非 root 用户都会收到套接字错误;

Mar 26 20:31:50 localhost ntpd[1055]: ./../lib/isc/unix/ifiter_ioctl.c:348: unexpected error:
Mar 26 20:31:50 localhost ntpd[1055]: making interface scan socket: Permission denied
Mar 26 20:35:09 localhost ntpd[1055]: ntpd exiting on signal 15


yeri@gplugD ~ $ ping google.be
ping: unknown host google.be
yeri@gplugD ~ $ ping 85.12.6.171
socket: Permission denied
yeri@gplugD ~ $ ssh localhost
socket: Permission denied
ssh: connect to host localhost port 22: Permission denied
yeri@gplugD ~ $ su
Password: 
gplugD ~ # ping 85.12.6.171 -c 1
PING 85.12.6.171 (85.12.6.171) 56(84) bytes of data.
64 bytes from 85.12.6.171: icmp_req=1 ttl=58 time=37.1 ms

--- 85.12.6.171 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 37.145/37.145/37.145/0.000 ms

由于这是 Guruplug Display,因此它不运行默认的 Debian 内核。但我找不到有关此问题的更多信息。我以前对普通的 Guruplug 也做过同样的事情,升级很顺利,没有任何问题。

gplugD ~ # uname -a 
Linux gplugD 2.6.29 #1 Wed Feb 16 17:59:04 IST 2011 armv5tejl GNU/Linux
gplugD ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mmcblk0p2        3.6G  917M  2.6G  27% /
tmpfs                 252M     0  252M   0% /lib/init/rw
udev                   10M   72K   10M   1% /dev
tmpfs                 252M     0  252M   0% /dev/shm
gplugD ~ # free -m
             total       used       free     shared    buffers     cached
Mem:           503        159        344          0          8        100
-/+ buffers/cache:         49        454
Swap:            0          0          0
gplugD ~ # cat /etc/debian_version 
6.0.1

dhcp 也拒绝自动为 eth0 分配 IP,除非我以 root 身份运行它。Sshd 似乎工作正常(我可以从另一台机器连接到它)。

另一方面,我注意到我也无法以 root 身份 ping 本地主机。“lo”也不会自动启动。

gplugD ~ # ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
^C
--- localhost ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3005ms

然而,

ifconfig lo 127.0.0.1 up

解决了“localhost”问题。

编辑:ping strace:http://pastebin.com/Dpm7i64G

知道为什么只有 root 可以访问与 tcp/ip/networking 相关的所有内容吗?

答案1

好的,找到了解决方法;

gplugD ~ # groupadd -g 3003 aid_inet
gplugD ~ # usermod -G aid_inet yeri

内核中硬编码:CONFIG_ANDROID_PARANOID_NETWORK

编辑:在 Nexus 7 上使用的 Android Jelly Bean (4.1) 上,我必须使用组名inet而不是aid_inet,因此:

$ groupadd -g 3004 inet   # I used 3004 instead of 3003 because 3003 was already taken by aid_inet
$ usermod -G inet <username>

与此相关的一些 Android 内核代码片段如下:http://blog.appuarium.com/2011/06/23/how-android-enforces-android-permission-internet/

答案2

我已经查看了这个问题,我所能建议的就是你联系内核开发人员,询问升级过程中的已知问题。我猜这是一个专有问题,标准 Squeeze 升级无法很好地解决。

抱歉,我无法提供更多。

相关内容