为什么 sudo 命令在 chroot 中不起作用?

为什么 sudo 命令在 chroot 中不起作用?

我刚刚安装了一个 32 位,chroot在我的 64 位系统上运行。在chroot环境中,sudo命令不起作用,它说

sudo:未找到命令

此外,当我尝试该su root命令时,我的密码不起作用(su: authentication failure)。他们想要什么密码?

我对 Ubuntu 还很陌生,所以实际上我不知道自己在做什么。我只是试着按照说明操作。


我通过启动以下chroot命令解决了这个特殊问题:

katarina@ubuntu:~$ schroot -c oneiric_i386 -u root

而不是我第一次使用的那个:

katarina@ubuntu:~$ schroot -a

我还有一些其他问题,但我想这不是这个问题所要解决的。

答案1

在我看来,问题更多的在于不理解 chroot 的作用。

它将 / 移动到您指定的位置,因此不再有 /bin、/sbin 或 /usr。

这意味着您将不再拥有 sudo,因为它位于其中一个目录中。

答案2

您必须在 chroot 环境中安装 sudo:

apt-get install sudo

答案3

当您启动 chroot 环境时,您通常已经是 root 身份,因此不需要使用sudosu root

如果您需要使用非 root 用户帐户,则需要先创建它,然后以该用户身份登录(在 chroot 中)

login myuser

或者

su - myuser

接下来,如果您想让该用户使用sudo,您需要将其添加到adminchroot 组中。

答案4

要获得一个可以正常工作的 chroot jail,需要做的事情比您想象的要多。在您的示例中,这是因为该sudo命令在 中/bin,但在您的新 root 中不可用。但仅仅将基础软件包安装到新 root 中是行不通的,您还需要挂载 / proc/sys对于/devjail,可能要创建几个符号节点,肯定是 ,tty并且对于大多数实际目的,如果没有 ,它可能也无法工作random。您可以使用 来做到这一点mknod

现在听起来很复杂,说实话,有点复杂。基于 Debian 的发行版有一种更简单的处理方法,即,debootstrap您可以找到基本的操作教程在 Ubuntu 帮助站点。

相关内容