2015-06-03 17 views
7

Tôi đang xây dựng một hệ thống Linux từ phía dưới cho bảng Beagle Bone. Tôi đã biên dịch hạt nhân vanilla và xây dựng một hệ thống tệp gốc cơ bản với busybox. Hệ thống được khởi động với U-boot, trong khi rootfs tọa lạc trên một máy tính Linux và xuất khẩu thông qua NFS:Busybox SUID trên 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) 

U-boot bootargs là:

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

tôi đã gặp phải một vấn đề khi cố gắng để có được su làm việc cho người dùng không phải root. Để khắc phục sự cố, mọi người trên internet đang đề xuất đặt bit suid cho mã nhị phân busybox. Sau khi làm như vậy:

$ sudo chmod u+s busybox 

và xác minh:

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

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

Something đã đi sai. Hạt nhân đang khởi động và tất cả các tin nhắn thông thường được hiển thị, nhưng nó đang bị kẹt ở cuối và không có dòng login nào được hiển thị. Dưới đây là vài dòng cuối cùng của chuỗi khởi động:

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

Nếu loại bỏ các lá cờ, những điều đang trở lại bình thường:

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

10.42.0.17 login: 

Nếu thiết lập cờ từ bên trong vỏ chạy trên board Beagle xương chính nó, vỏ đang dừng đáp ứng ngay sau khi chmod được thực hiện. Tôi nghi ngờ nó là một cái gì đó để làm với cách NFS được xuất khẩu rootfs, nhưng nó chỉ là một đoán, do đó, đủ điều kiện giải thích và giải pháp có thể sẽ hữu ích.

Trả lời

0

Sau một số nghiên cứu, tôi sẽ tự trả lời câu hỏi của mình. Câu trả lời rất đơn giản. Để làm việc ở trên, mã nhị phân busybox phải thuộc sở hữu của root:root. Giải pháp đơn giản nhất là thay đổi quyền sở hữu.

Các vấn đề liên quan