大概就是...
- download kernel source code,enable RAM initrd, 加大 ramdisk size, build bzImage.
- download busybox, build static, make installl (create _install),然後修改一個 rootfs 的 directory structure. 然後用這個 _install folder 做出 rootfs 的 image
then..把 bzImage 和 rootfs.img.gz copy 出來.
qemu-system-x86_64 -kernel ./bzImage -initrd ./rootfs.img.gz -nographic -append "console=ttyS0 root=/dev/ram init=/linuxrc"qemu default 會用 SDL,開啟 graphic console(雖然也是 console),所以要用 -nographic,然後加上 console=ttyS0,讓 console 從 ttyS0 到 command line console.
mount -o rw,remount /dev/root / touch /etc/passwd touch /etc/group adduser charles這樣,就可以su - charles,測試 root 和 charles (general user) 對 busybox command 的權限。
測試:
以 poweroff 為例,在 /sbin/poweroff,一樣 link 到 /bin/busybox
charles 執行的化,第一個,會找不到 poweroff,因為 path 中沒有 sbin
如果用 /sbin/poweroff:
poweroff: (null): Operation no permitted但是,用 ip 來測試,一樣在 /sbin/ip。一樣說 not found,但是用 /sbin/ip 來執行,就可以正常執行了。
所以 poweroff 的 permission ,應該是設在 device 端的。
filesystem level 是沒有辦法限制 一般使用者透過 /sbin/ 來執行系統command
所以發現 busybox 這種 link 的方式,沒辦法限制一般 user 執行某些 root 才能執行的 command
沒有留言:
張貼留言