![为什么 sudo 命令在 chroot 中不起作用?](https://linux22.com/image/960453/%E4%B8%BA%E4%BB%80%E4%B9%88%20sudo%20%E5%91%BD%E4%BB%A4%E5%9C%A8%20chroot%20%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我刚刚安装了一个 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 身份,因此不需要使用sudo
或su root
。
如果您需要使用非 root 用户帐户,则需要先创建它,然后以该用户身份登录(在 chroot 中)
login myuser
或者
su - myuser
接下来,如果您想让该用户使用sudo
,您需要将其添加到admin
chroot 组中。
答案4
要获得一个可以正常工作的 chroot jail,需要做的事情比您想象的要多。在您的示例中,这是因为该sudo
命令在 中/bin
,但在您的新 root 中不可用。但仅仅将基础软件包安装到新 root 中是行不通的,您还需要挂载 / proc
,/sys
对于/dev
jail,可能要创建几个符号节点,肯定是 ,tty
并且对于大多数实际目的,如果没有 ,它可能也无法工作random
。您可以使用 来做到这一点mknod
。
现在听起来很复杂,说实话,有点复杂。基于 Debian 的发行版有一种更简单的处理方法,即,debootstrap
您可以找到基本的操作教程在 Ubuntu 帮助站点。