我正在使用以下步骤测试挂载命名空间:
# unshare --mount
# mount --bind rootfs/ ns_dir/
# cd ns_dir/
# pivot_root . .
# cd /
我的 rootfs 有子文件夹/lib
, /bin
, /etc
。我已经放置了各种二进制文件的依赖项,包括bash
和su
。
su
我的问题涉及命名空间内部的使用。我尝试了以下方法:
root:/# su alice
alice:/$ su bob
su: must be run from a terminal
我想问一下错误的含义su: must be run from a terminal
。我在网上搜索并找到像这样的黑客答案关联它要求以下内容:
echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py
python /tmp/asdf.py
我尝试了该方法这答案,但没有成功。我想问一下解决这个错误的正确方法是什么。我认为发生错误是因为需要输入密码才能切换用户。
答案1
您可以做的是取消与内部非 root 的共享,然后使用不带 的 Enterns ,--preserve-credentials
这会为您提供容器内的 root 权限,您可以使用该容器进行挂载。