23个版本
0.7.0 | 2021年5月4日 |
---|---|
0.6.0 | 2020年11月24日 |
0.5.1 | 2018年10月11日 |
0.4.0 | 2018年7月23日 |
0.1.4 | 2015年11月12日 |
#480 in Unix API
475 每月下载量
在 5 crates 中使用
96KB
2K SLoC
Rust Unshare
状态: 90% 功能完善,在生产环境中运行于 lithos 并为 vagga 提供动力
Unshare是一个用于创建Linux容器的低级库。
它包含以下内容:
- 类似于
std::process::Command
的进程创建接口 - 共享任意Linux命名空间
- 更改root(
chroot/pivot_root
),uid
,gid
,gid_map
- 一些信号屏蔽处理(特别是对于新进程)
- 转发文件描述符和其他Unix相关内容(会话,终端)
- 设置一些重要的prctl标志(
PR_SET_PDEATHSIG
) - 以root用户和无特权用户身份运行
尚未实现
- 细粒度的能力控制(目前可以更改用户或使用用户命名空间)
以下正在考虑
- 捕获输入(应该是,因为它是
std::process
接口的一部分) - 为子进程创建伪终端
unshare
和setns
以下超出范围
- 挂载文件系统
- 设置网络
- 容器内和容器外监督
- 处理子进程信号
许可证
许可协议为以下之一
- Apache许可证2.0版本(./LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(./LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将采用上述双重许可,不附加任何额外条款或条件。
依赖关系
~1.5MB
~37K SLoC