名称¶
podman-unshare - 在修改后的用户命名空间中运行命令
概要¶
podman unshare [选项] [命令]
描述¶
在新的用户命名空间中启动一个进程(默认情况下为 $SHELL)。用户命名空间被配置为使调用用户的 UID 和主 GID 分别显示为 UID 0 和 GID 0。在 /etc/subuid
和 /etc/subgid
中与该用户和组匹配的任何范围也会在 newuidmap(1) 和 newgidmap(1) 帮助程序的帮助下作为自身映射。
podman unshare 对于排查非特权操作和手动清除与镜像和容器相关联的存储和其他数据很有用。
它也适用于使用 podman mount 命令。如果非特权用户想要挂载和操作容器,那么他们需要执行 podman unshare。除非用户在 podman unshare 会话中运行,否则执行 podman mount 会针对非特权用户失败。
unshare 会话定义了两个环境变量
CONTAINERS_GRAPHROOT: 持久容器数据的路径。
CONTAINERS_RUNROOT: 易失性容器数据的路径。
重要:此命令在远程 Podman 客户端中不可用。
选项¶
--help, -h¶
打印使用说明
--rootless-netns¶
加入用于 netavark 网络的无根网络命名空间。它可用于通过 IP 地址(桥接网络)连接到无根容器。否则,这在主机网络命名空间中是不可能的。
退出代码¶
来自 podman unshare
的退出代码提供有关容器运行失败或退出原因的信息。当 podman unshare
命令以非零代码退出时,退出代码遵循 chroot
标准,请参见下文
125 错误在 podman 本身 中
$ podman unshare --foo; echo $?
Error: unknown flag: --foo
125
126 执行 包含的命令 并且 命令 无法调用
$ podman unshare /etc; echo $?
Error: fork/exec /etc: permission denied
126
127 执行 包含的命令 并且 命令 找不到
$ podman unshare foo; echo $?
Error: fork/exec /usr/bin/bogus: no such file or directory
127
退出代码 包含的命令 退出代码
$ podman unshare /bin/sh -c 'exit 3'; echo $?
3
示例¶
在无根用户命名空间中执行指定的命令
$ podman unshare id
uid=0(root) gid=0(root) groups=0(root),65534(nobody)
显示无根容器的用户命名空间映射
$ podman unshare cat /proc/self/uid_map /proc/self/gid_map
0 1000 1
1 10000 65536
0 1000 1
1 10000 65536
在无根容器的用户命名空间中显示无根 netns 信息
$ podman unshare --rootless-netns ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tap0: <BROADCAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether aa:8c:0b:73:98:f6 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0
valid_lft forever preferred_lft forever
inet6 fd00::a88c:bff:fe73:98f6/64 scope global dynamic mngtmpaddr
valid_lft 86389sec preferred_lft 14389sec
inet6 fe80::a88c:bff:fe73:98f6/64 scope link
valid_lft forever preferred_lft forever
另请参阅¶
podman(1), podman-mount(1), namespaces(7), newuidmap(1), newgidmap(1), user_namespaces(7)