
如何快速上手LiteBox10分钟运行第一个未修改的Linux程序【免费下载链接】liteboxA security-focused library OS supporting kernel- and user-mode execution项目地址: https://gitcode.com/GitHub_Trending/lit/liteboxLiteBoxLiteBox 库操作系统是一个安全优先的「library OS」沙箱能在未修改的 Linux 程序与宿主环境之间建立极窄的接口面从而大幅缩小攻击面。本文将带你用 10 分钟从零克隆、编译并跑通第一个未修改的 Linux 程序适合想体验 Linux 应用沙箱、跨平台运行的新手与普通用户。 上图为 LiteBox 的整体架构上方的North 接口面向各种程序Linux Shim、OPTEE Shim 等下方的South 接口对接不同平台Linux 用户态、Windows 用户态、SEV SNP 等中间的 LiteBox 核心把两者解耦实现任意「北-南」组合。一、LiteBox 是什么为什么值得上手一句话概括LiteBox 让你把一个普通的 Linux 可执行文件放进一个受控沙箱里运行程序代码完全不用改。它的典型用途包括️ 在未修改的 Linux 上沙箱化运行 Linux 应用 在 Windows 上运行未修改的 Linux 程序️ 在 AMD SEV SNP 机密计算环境中运行程序 在 OP-TEE、LVBS 等安全平台上运行程序对新手来说最易上手的场景就是第一个在 Linux 上用litebox_runner_linux_userland跑一个现成的二进制。二、环境准备一键安装步骤开始之前请确认你的机器满足以下条件以 x86-64 Linux 为例依赖用途说明Rust 工具链stable 即可编译项目项目根目录的 rust-toolchain.toml 指定 stableC 编译器gcc/cc编译测试小程序用于把 C 源码编译成 ELFtar打包 rootfs沙箱文件系统以 tar 形式提供内核 TUN 模块可选联网功能见 litebox_platform_linux_userland/scripts/tun-setup.sh三、10 分钟跑通完整上手步骤步骤 1克隆 LiteBox 仓库git clone https://gitcode.com/GitHub_Trending/lit/litebox cd litebox步骤 2编译运行器运行器是一个 Cargo 工作区成员直接构建即可首次编译约几分钟cargo build --package litebox_runner_linux_userland步骤 3准备一个未修改的 Linux 程序仓库自带测试程序 litebox_runner_linux_userland/tests/hello.c它打印 argv/envp 并调用clock_gettime是完美的「第一个程序」。先把它编译成静态或动态 ELFgcc -static litebox_runner_linux_userland/tests/hello.c -o /tmp/hello步骤 4在 LiteBox 沙箱中运行它关键命令只有一条注意--unstable是必需开关它启用不稳定选项cargo run --package litebox_runner_linux_userland -- \ --unstable --rewrite-syscalls /tmp/hello如果看到类似这样的输出恭喜你第一个程序跑通了 argv[0] /tmp/hello Elapsed time: 0.0xxx seconds这条命令在做什么--rewrite-syscalls会在运行前对 ELF 做一次性「系统调用重写」把二进制中每条syscall指令替换成跳转指令挂接到 LiteBox 的桩代码上详见 litebox_syscall_rewriter/src/lib.rs。整个过程不需要 ptrace、seccomp 或内核配合开销很低——这是 LiteBox 能在纯用户态拦截系统调用的核心技巧。⚠️ 小提示重写目前仅支持 x86-64 ELF另外它是对静态二进制最友好动态链接程序需要补齐依赖库见下文。步骤 5运行真实的系统程序进阶 5 分钟跑ls这类动态链接程序时需要把它的共享库一并放进沙箱的 tar 文件系统。做法参考 litebox_runner_linux_userland/tests/run.rs 中的标准流程# 1. 建一个目录模拟 rootfs放入程序和依赖库 mkdir -p /tmp/rootfs/lib cp /usr/bin/ls /tmp/rootfs/ cp $(ldd /usr/bin/ls | awk {print $3} | grep ^/) /tmp/rootfs/lib/ # 2. 打成 tar 包 tar -C /tmp/rootfs -cf /tmp/rootfs.tar . # 3. 运行程序路径是 tar 内部的绝对路径 cargo run --package litebox_runner_linux_userland -- \ --unstable --initial-files /tmp/rootfs.tar \ --env LD_LIBRARY_PATH/lib --env HOME/ \ -- /bin/ls -a运行器会把这个 tar 包挂成只读的初始文件系统再执行其中的/bin/ls。动态链接场景下依赖库需要先用 rewrite 工具预处理这一点在 litebox_runner_linux_userland/tests/common/mod.rs 的rewrite_with_cache中有现成参考。四、理解架构North 接口与 South 平台LiteBox 的源码结构非常清晰核心分三层North北向接口一套 Rust 风格的、受nix/rustix启发的类 Unix API供各种 Shim 调用核心库位于 litebox/src/lib.rsSouth南向平台最小化的Platform实现如 litebox_platform_linux_userland 直接利用宿主机 Linux 的调用Shim模拟器把 Linux 系统调用翻译成 North 接口见 litebox_shim_linux/src/lib.rs想深入源码从 litebox_runner_linux_userland/src/lib.rs 的 CLI 参数定义入手再顺着 litebox/src/event/mod.rs、litebox/src/fd/mod.rs 等模块读就能摸清事件、文件描述符、虚拟文件系统litebox/src/fs/的完整链路。五、可选为沙箱接入网络TUN 设备如果程序需要联网先初始化一个 TUN 设备sudo ./litebox_platform_linux_userland/scripts/tun-setup.sh然后给运行器加上--tun-device-name tun0参数即可沙箱内的 TCP 流量会经由该设备与主机通信仓库测试中就用它跑了iperf3和curl见 litebox_runner_linux_userland/tests/run.rs。六、常见问题与调试技巧问题解决方法想看到详细日志设置LITEBOX_LOGdebug如LITEBOX_LOGdebug cargo run ...也可按模块过滤如LITEBOX_LOGlitebox::fstrace参数报「unstable options require -Z」加上--unstable也可写作-Z动态程序缺库报错用ldd列出依赖逐一拷入 tar 并设置LD_LIBRARY_PATH程序写文件失败tar 文件系统是只读的属正常现象用户身份相关报错运行器内部固定使用 uid/gid 1000 的 guest 身份见 litebox_runner_linux_userland/src/lib.rs七、下一步学什么 想体验「Linux 程序跑在 Windows 上」看 litebox_platform_windows_userland/ 与 litebox_runner_linux_on_windows_userland/ 想生成自包含的 tar 打包镜像了解 litebox_packager/ 想给项目做贡献阅读 CONTRIBUTING.md 想看基准测试方法参考 dev_bench/unixbench/README.md总结只需 4 步——克隆 → 编译 → 准备程序 → 一条命令运行你就已经体验了 LiteBox 这个安全优先的库操作系统如何在未修改的 Linux 程序上建立沙箱。它的 North/South 分层设计意味着同一套 Shim 可以平移到 Windows、SEV SNP 等平台这也是它最值得关注的地方。现在去试试把你的常用工具python3、node、iperf3也搬进沙箱吧说明项目仍在快速演进部分接口可能随设计成熟而变化建议关注仓库更新获取最新用法。【免费下载链接】liteboxA security-focused library OS supporting kernel- and user-mode execution项目地址: https://gitcode.com/GitHub_Trending/lit/litebox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考