我计划推出几台(约 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 升级无法很好地解决。
抱歉,我无法提供更多。