1个不稳定版本
0.7.1 | 2023年7月11日 |
---|
#70 in #file-descriptor
在 petbox 中使用
95KB
2K SLoC
Rust Unshare
这是 unshare 的捆绑版本。
Unshare 是一个用于创建linux容器的低级库。
它包含以下内容
- 类似于
std::process::Command
的进程创建接口 - 任意linux命名空间的unsharing
- 更改root(
chroot/pivot_root
)、uid
、gid
、gid_map
- 一些信号掩码处理(特别是对于新进程)
- 转发文件描述符和其他unixy东西(会话、终端)
- 设置一些重要的prctl标志(
PR_SET_PDEATHSIG
) - 作为root用户和无特权用户运行
尚未实现
- 细粒度的能力控制(目前您可以更改用户或使用用户命名空间)
以下正在考虑
- 捕获输入(应该是,因为它是
std::process::Command
接口的一部分) - 为子进程创建伪终端
unshare
和setns
以下不在范围内
- 挂载文件系统
- 设置网络
- 容器内和容器外的监督
- 处理子进程信号
依赖
~1.5MB
~37K SLoC