Podman 和用户命名空间:天作之合

了解如何使用 Podman 在单独的用户空间运行容器。

了解如何使用 Podman 在单独的用户空间运行容器。

Podman 和用户命名空间:天作之合

Podmanlibpod 库的一部分,使用户能够管理 pod、容器和容器镜像。在我的上一篇文章中,我写过将 Podman 作为一种更安全的运行容器的方式。在这里,我将解释如何使用 Podman 在单独的用户命名空间中运行容器。

作为分离容器的一个很棒的功能,我一直在思考 用户命名空间 user namespace ,它主要是由 Red Hat 的 Eric Biederman 开发的。用户命名空间允许你指定用于运行容器的用户标识符(UID)和组标识符(GID)映射。这意味着你可以在容器内以 UID 0 运行,在容器外以 UID 100000 运行。如果容器进程逃逸出了容器,内核会将它们视为以 UID 100000 运行。不仅如此,任何未映射到用户命名空间的 UID 所拥有的文件对象都将被视为 nobody 所拥有(UID 是 65534, 由 kernel.overflowuid 指定),并且不允许容器进程访问,除非该对象可由“其他人”访问(即世界可读/可写)。

如果你拥有一个权限为 660 的属主为“真实” root 的文件,而当用户命名空间中的容器进程尝试读取它时,会阻止它们访问它,并且会将该文件视为 nobody 所拥有。

示例

以下是它是如何工作的。首先,我在 root 拥有的系统中创建一个文件。


$ sudo bash -c "echo Test > /tmp/test"
$ sudo chmod 600 /tmp/test
$ sudo ls -l /tmp/test
-rw-. 1 root root 5 Dec 17 16:40 /tmp/test

接下来,我将该文件卷挂载到一个使用用户命名空间映射 0:100000:5000 运行的容器中。

“`
$ sudo podman run -ti -v /tmp/test:/tmp/test:Z –uidmap 0:100000:5000 fedora sh

id

uid=0(root) gid=0(root) groups=0(root)

ls -l /tmp/test

-rw-rw

via: https://opensource.com/article/18/12/podman-and-user-namespaces

作者:Daniel J Walsh 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

主题测试文章,只做测试使用。发布者:eason,转转请注明出处:https://aicodev.cn/2019/08/26/podman-%e5%92%8c%e7%94%a8%e6%88%b7%e5%91%bd%e5%90%8d%e7%a9%ba%e9%97%b4%ef%bc%9a%e5%a4%a9%e4%bd%9c%e4%b9%8b%e5%90%88/

(0)
eason的头像eason
上一篇 2019年8月25日 下午1:54
下一篇 2019年8月26日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信