2015-06-03 12 views
7

Ich baue ein Linux-System von der Unterseite für ein Beagle Bone Board. Ich habe den Vanilla-Kernel kompiliert und ein Basis-Root-Dateisystem mit busybox erstellt. Das System ist mit U-Boot gestartet, während die rootfs auf einem Linux-PC und exportierte über NFS befindet:Busybox SUID auf NFS rootfs

/path/to/rootfs 10.42.0.17(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash) 

Die U-Boot-bootargs ist:

bootargs console=ttyO0,115200n8 root=/dev/nfs rw nfsroot=${serverip}:/path/to/rootfs,v3,tcp ip=dhcp 

Ich habe ein Problem festgestellt wenn versucht wird, su für Nicht-root-Benutzer zu erhalten. Um das Problem zu umgehen, schlagen die Leute über das Internet vor, das suid Bit für die busybox Binärdatei zu setzen. Nach tun:

$ sudo chmod u+s busybox 

und Verifizieren:

$ ls -la 
... 
-rwsr-xr-x 1 myuser myuser 1882976 Jan 13 21:47 busybox 
... 

$ stat -c "%a %n" busybox 
4755 busybox 

ging etwas schief. Der Kernel bootet und alle üblichen Nachrichten werden angezeigt, aber es bleibt am Ende stecken, und es wird keine Zeile login angezeigt. Hier sind letzte Zeilen der Bootsequenz:

[ 3.776185] IP-Config: Complete: 
[ 3.779656]  device=eth0, hwaddr=c8:a0:30:c5:80:e9, ipaddr=10.42.0.17, mask=255.255.255.0, gw=10.42.0.1 
[ 3.789877]  host=10.42.0.17, domain=, nis-domain=(none) 
[ 3.795822]  bootserver=10.42.0.1, rootserver=10.42.0.1, rootpath= 
[ 3.802492]  nameserver0=10.42.0.1 
[ 3.871575] VFS: Mounted root (nfs filesystem) on device 0:15. 
[ 3.879903] devtmpfs: mounted 
[ 3.883713] Freeing unused kernel memory: 380K (c07ef000 - c084e000) 

Wenn die Flagge zu entfernen, die Dinge sind wieder normal:

.... 
[ 3.862291] Freeing unused kernel memory: 380K (c07ef000 - c084e000) 

10.42.0.17 login: 

Wenn das Flag aus der laufenden Shell auf der Beagle-Knochen-Board selbst reagiert die Shell nicht mehr, nachdem die chmod ausgeführt wurde. Ich vermute, dass es etwas mit der Art und Weise zu tun hat, wie das NFS die rootfs exportiert, aber es ist nur eine Vermutung, daher wäre eine qualifizierte Erklärung und eine mögliche Lösung hilfreich.

Antwort

0

Nach ein paar Recherchen werde ich meine Frage selbst beantworten. Die Antwort ist sehr einfach. Damit das oben genannte funktioniert, sollte die busybox Binärdatei im Besitz von root:root sein. Die einfachste Lösung besteht darin, nur das Eigentum zu ändern.