#container #process #linux #namespaces #docker #file-descriptor

unshare_petbox

linux 命名空间(容器)的低级接口,用于与petbox一起使用

1个不稳定版本

0.7.1 2023年7月11日

#70 in #file-descriptor


petbox 中使用

MPL-2.0 许可证

95KB
2K SLoC

Rust Unshare

这是 unshare 的捆绑版本。


Unshare 是一个用于创建linux容器的低级库。

它包含以下内容

  • 类似于 std::process::Command 的进程创建接口
  • 任意linux命名空间的unsharing
  • 更改root(chroot/pivot_root)、uidgidgid_map
  • 一些信号掩码处理(特别是对于新进程)
  • 转发文件描述符和其他unixy东西(会话、终端)
  • 设置一些重要的prctl标志(PR_SET_PDEATHSIG
  • 作为root用户和无特权用户运行

尚未实现

  • 细粒度的能力控制(目前您可以更改用户或使用用户命名空间)

以下正在考虑

  • 捕获输入(应该是,因为它是 std::process::Command 接口的一部分)
  • 为子进程创建伪终端
  • unsharesetns

以下不在范围内

  • 挂载文件系统
  • 设置网络
  • 容器内和容器外的监督
  • 处理子进程信号

依赖

~1.5MB
~37K SLoC