2015-06-03 35 views
7

Sto costruendo un sistema Linux dal basso per una scheda Beagle Bone. Ho compilato il kernel vanilla e ho creato un file system di root con busybox. Il sistema viene avviato con U-boot, mentre il rootfs si trova su un PC Linux e esportati tramite NFS:Busybox SUID su rootfs NFS

/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) 

L'U-boot bootargs sono:

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

ho incontrato un problema quando si cerca di far funzionare su per utenti non-root. Per risolvere il problema, le persone su Internet suggeriscono di impostare il bit suid per il binario busybox. Dopo questo modo:

$ sudo chmod u+s busybox 

e verifica:

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

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

Qualcosa è andato storto. Il kernel è in fase di avvio e vengono visualizzati tutti i messaggi normali, ma alla fine si blocca e non viene visualizzata la riga login. Ecco ultime righe della sequenza di boot:

[ 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) 

Se la rimozione della bandiera, le cose stanno tornando alla normalità:

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

10.42.0.17 login: 

Se impostando il flag all'interno della shell in esecuzione sulla scheda Beagle Bone in sé, la shell smette di rispondere subito dopo l'esecuzione dello chmod. Sospetto che abbia a che fare con il modo in cui NFS sta esportando il rootfs, ma è solo una supposizione, quindi una spiegazione qualificata e una possibile soluzione sarebbero utili.

risposta

0

Dopo alcune ricerche risponderò io stesso alla mia domanda. La risposta è molto semplice. Per far funzionare quanto sopra, il binario busybox dovrebbe essere di proprietà di root:root. La soluzione più semplice è solo per cambiare la proprietà.