2015-06-03 39 views
7

Buduję system Linux od dołu dla płyty Beagle Bone. Skompilowałem jądro wanilii i zbudowałem podstawowy system plików root z busybox. System jest uruchamiany z U-boot, natomiast rootfs znajduje się na komputerze z systemem Linux i eksportowane przez NFS:Busybox SUID na 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) 

U-boot bootargs są:

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

Napotkałem problem podczas próby uzyskania su pracy dla użytkowników innych niż root. W celu obejścia problemu osoby korzystające z Internetu sugerują ustawienie binarnego kodu suid dla pliku suid. Po robią tak:

$ sudo chmod u+s busybox 

i weryfikacji:

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

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

Coś poszło nie tak. Jądro się uruchamia i wyświetlane są wszystkie zwykłe komunikaty, ale na końcu się blokuje i nie wyświetla się linia login. Oto kilka ostatnich wierszy sekwencji uruchamiania:

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

Jeśli usunięcie flagi, rzeczy wracają do normy:

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

10.42.0.17 login: 

Jeśli ustawienie flagi z poziomu uruchomionej powłoki na pokładzie Beagle Bone sam skorupa przestaje odpowiadać zaraz po wykonaniu chmod. Podejrzewam, że ma to coś wspólnego ze sposobem, w jaki NFS eksportuje rootfs, ale to tylko domysły, więc pomocne byłoby wyjaśnienie i możliwe rozwiązanie.

Odpowiedz

0

Po pewnych badaniach sam odpowiem na to pytanie. Odpowiedź jest bardzo prosta. Aby powyższe działanie zadziałało, plik binarny busybox powinien być własnością root:root. Najprostszym rozwiązaniem jest zmiana właściciela.