复制步骤

复制步骤

我正在尝试手动设置“无根”容器,只需unshare安装overlayfs.目前,我可以解压 rootfs tarball、设置/tmp/proc挂载以及将 hub_root/chroot 放入其中,不会出现任何问题。我还可以添加 addusersu作为新用户。

但是,当我设置挂载时overlayfs,下层是解压的 tarball,上层是临时目录,当我su作为新用户时,重复上述步骤会失败,并出现权限被拒绝的问题。我怀疑这与新创建的用户没有adduser从覆盖文件系统读取的权限有关,但我不确定。demsg即使设置/proc/sys/kernel/printk为,我也看不到任何日志6

复制步骤

什么有效(解压缩的 tarball)

取消共享到终端中的新安装和用户命名空间

unshare -pf --user --mount-proc --kill-child /bin/bash

在另一个终端使用newuidmapnewgidmap新进程中:

newuidmap $PID 0 1000 1 1 100000 65536
newgidmap $PID 0 1000 1 1 100000 65536

回到第一个终端,在命名空间中,解压 rootfs,设置挂载,然后 chroot 并创建一个新用户。

mkdir rootfs
tar -xvf alpine-minirootfs-3.15.3-x86.tar -C rootfs
mkdir mountpoint
mount --bind rootfs/ mountpoint/
mkdir -p mountpoint/tmp/
mkdir -p mountpoint/proc/
mount -t tmpfs none mountpoint/tmp/
mount -t proc none mountpoint/proc
cd mountpoint/
pivot_root . .
exec chroot . /bin/sh
# Create the new user and su as it
adduser -s /bin/sh -D newuser
# The below command works
su newuser -

上述步骤在我能够su作为newuser.

什么不起作用(overlayfs)

更改覆盖 fs 支持的挂载点不起作用。

重复上面的步骤来准备 rootfs。

取消共享到终端中的新安装和用户命名空间。

unshare -pf --user --mount-proc --kill-child /bin/bash

在另一个终端使用newuidmapnewgidmap新进程中:

newuidmap $PID 0 1000 1 1 100000 65536
newgidmap $PID 0 1000 1 1 100000 65536

回到第一个终端,在命名空间中,解压 rootfs,设置覆盖安装,chroot 并创建一个新用户。

mkdir rootfs
tar -xvf alpine-minirootfs-3.15.3-x86.tar -C rootfs
mkdir mountpoint
# This is the key difference from above
mount -t overlay none -o lowerdir=$(realpath ./rootfs),upperdir=$(mktemp -d),workdir=$(mktemp -d) $(realpath ./mountpoint)
mkdir -p mountpoint/tmp/
mkdir -p mountpoint/proc
mount -t tmpfs none mountpoint/tmp/
mount -t proc none mountpoint/proc
cd mountpoint/
pivot_root . .
exec chroot . /bin/sh
# Create the new user and su as it
adduser -s /bin/sh -D newuser
# The below command fails with permission denied
su newuser -
#
# su: can't execute '/bin/sh': Permission denied

环境信息

以上命令在带有内核的 Ubuntu Impish 上运行5.13.0-37-generic

答案1

检查您对上层目录的权限。mktemp -p必须为您的新用户创建一个可读且可执行的目录;也许stat /在你的枢轴根调用之后会显示0700它应该在什么时候0755

再试一次$(umask 0022; mktemp -p)

相关内容