【问题标题】:Can I run bash rootless with `podman`?我可以使用 podman 无根运行 bash 吗?
【发布时间】:2021-05-11 00:39:37
【问题描述】:

简单的场景是这样的;在本教程中:

在 Ubuntu 容器中运行 bash,无需 root/sudo 权限。命令行,是:

podman run --rm --interactive --tty ubuntu bash

这个命令带来如下结果:

  $ podman run --rm --interactive --tty ubuntu:20.10 bash
 Completed short name "ubuntu" with unqualified-search registries (origin: /etc/containers/registries.conf)
 Trying to pull docker.io/library/ubuntu:20.10...
 Getting image source signatures
 Copying blob 79e7e9027772 done  
 Copying blob eed86eef5a46 done  
 Copying blob 1b553362680b done  
 Copying config deb373a625 done  
 Writing manifest to image destination
 Storing signatures
    Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs 
    available in user namespace (requested 0:42 for /etc/gshadow): 
    Check /etc/subuid and /etc/subgid: lchown /etc/gshadow: invalid argument 
    Error: Error committing the finished image: error adding layer with 
    blob "sha256:eed86eef5a4687135cb1ba7c55da6af79c9182e8bf59b53a880d1b334515c8e3": 
    Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs 
    available in user namespace (requested 0:42 for /etc/gshadow): Check /etc/subuid 
    and /etc/subgid: lchown /etc/gshadow: invalid argument

这使我们相信一些进一步的特权是必要的(可能不是 root,但是...)。这已通过使用sudo 运行相同的命令得到证实——除了popdman Ubuntu 图像在我的PC 上以root 运行外,它工作得非常愉快。不是我期望的快乐结果。

目前这台机器上的/etc/subuid/etc/subgid 文件只有少数samba 用户和一个wireshark 用户的条目,如图所示:

     /etc/subgid                     /etc/subgid
     
 tsmith:100000:65536             tsmith:100000:65536
 demo:165536:65536               demo:165536:65536
 smbguest:231072:65536           smbguest:231072:65536
 wireshark:296608:65536          wireshark:296608:65536

在这一点上我真的没有指导。我意识到我需要对subuid-s 和subgid-s 做一些事情,才能使这个示例正常工作。到目前为止,我还没有找到一些关于需要什么的提示或文档。除了不直接编辑文件——很公平。

同样在上述教程中,是一个非sudo 的示例,查看subuid-s:

$ podman unshare cat /proc/self/uid_map
    0       1000          1
    1     100000      65536

我问自己,用户 #1 只是一个例子,还是我错过了一步?当我在这台电脑上做同样的事情时,我看到的是:

$ podman unshare cat /proc/self/uid_map
    0       1000          1

没有用户#1,只有用户#0。我要采取什么行动?现在的问题是:

  1. 如何让 Ubuntu bash shell 在容器中无根运行?
    • 只需稍加改动即可看到 bash 无根运行。
  • 我从哪里开始?
  • 我需要做什么?
  • 我该怎么做?

【问题讨论】:

  • 我觉得文件路径应该是/etc/subuid/etc/subgid/etc/subguid 是错字吗?
  • @ErikSjölund ... 非常感谢,已修复。
  • 你提到了 Samba。如果主目录位于 Samba 上,则如果不进行任何重新配置​​,它将无法开箱即用。问题是 Samba 不理解 subuids 的概念。您可以尝试重新配置 Podman 以使用本地文件系统上的某些目录。有些相关:github.com/containers/podman/blob/master/… 如果 Samba 是问题所在,例如,您可以首先使用本地磁盘上的主目录创建一个测试用户。这可能是第一次快速测试。

标签: ubuntu podman rootless


【解决方案1】:
【解决方案2】:

我最终通过应用此处的所有步骤让 Ubuntu 使用无根容器...

这些点几乎与我以前开始的原始文章中的观点相同,所以我真的不能说第一次没有正确地完成哪一点。该帖子中的步骤绝对可以完成这项工作。

确认您的容器是无根的非常重要(imho)。有时您仍然可以以 root 身份运行,但认为它正在“工作”。

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 2021-04-28
    • 2011-03-26
    • 2011-04-23
    • 1970-01-01
    • 2021-08-07
    • 2022-07-04
    • 2015-09-06
    • 2021-04-11
    相关资源
    最近更新 更多