sta*_*fry 6 chroot users arch-linux
我遇到了一个问题chroot
...
我在 Arch Linux x86_64 上运行。
我有一个 64 位 chroot 和一个 32 位 chroot。它们是相同的,只是一个是 32 位,一个是 64 位。
我可以使用chroot /path/to/chroot
. 没问题。
如果我想以特定用户身份执行此操作,则命令是:
chroot --userspec=user:group /path/to/chroot
Run Code Online (Sandbox Code Playgroud)
这也适用于 64 位 chroot。然而,它在 32 位 chroot 上失败了。它失败并显示状态 125 和消息chroot: invalid user
此外,chroot --userspec=uid:gid /path/to/chroot
在 32 位和 64 位 chroot 中都可以正常工作(uid
并且gid
是所需用户和组的数字 ID)。
我不知道我是否做错了什么。有没有人有 32 位 chroot 并且可以看看上面的内容是否可以复制?
所有命令都以 root 身份发出。用于 userspec 参数的用户和组需要在 chroot 中定义。
或者,如果我遗漏了什么,我会很感激知道我哪里出错了。
更新:我正在使用解决此问题的方法。假设$user
有user:group
我想要的(例如john:users
),我这样做:
u=$(echo $user | awk -F ":" '{print $1}')
g=$(echo $user | awk -F ":" '{print $2}')
uid=$(grep $u /opt/chroot32/etc/passwd | awk -F ":" '{print $3}')
gid=$(grep $g /opt/chroot32/etc/group | awk -F ":" '{print $3}')
echo "Using $uid:$gid in place of $user"
chroot --userspec="$uid:$gid" /opt/chroot32
Run Code Online (Sandbox Code Playgroud)
这是有效的 - 它user:group
在 chroot 的 passwd 和 group 文件中查找所需的文件,然后将它们用于 chroot。并且在访问 64 位 chroot 时不需要上述解决方法。
小智 2
您不能使用目标 chroot 环境未知的用户名输入 chroot。将用户身份验证所需的所有文件复制到每个 chroot:/etc/passwd
、/etc/shadow
、/etc/nsswitch.conf
、 以及最终/etc/pam.d/*
. 我