使用 chroot 登录到用户会话

使用 chroot 登录到用户会话

我有一个 USB 拇指棒,其分区方案如下:

sdb
  sdb1  -> root partition '/'
  sdb2  -> /home partition 

如果我从 Live CD 启动,或者只是从计算机硬件上当前的 Ubuntu 操作系统启动,我可以chroot这样:

mount /dev/sdb1 /mnt
mount /dev/sdb2 /mnt/home
chroot /mnt /bin/bash

在本例中,我的提示类似于[root@archiso]。问题是我想登录我的用户帐户/mnt/home/me,但我不知道该怎么做?进一步的目标是从此用户会话启动 X(以及任何桌面管理器)。

所以我需要解决的问题如下:

1) chroot 后如何登录我的用户会话?

2) 一旦我登录,是否可以启动 X startx,即使我最初登录我的计算机 Ubunu 操作系统,并且 gnome 会话已经在运行?

答案1

  1. chroot按照问题中的描述执行,然后执行su - fred(或无论您的名字是什么)或exec su - fred
  2. 执行chroot /mnt /bin/su - fred,以便 它将su成为在 chroot 环境中运行的第一件事。

请注意,上述两者都假设您的fred用户是在/mnt/etc/passwd.

或者

  1. 执行chroot --userspec=fred:bedrock --groups=group1,group2 /mnt /bin/bash,从 chroot 开始就设置您的用户身份。这chroot调用手册说,

    --userspec 由和选项执行的用户名和组名查找在--groupschroot 外部和内部完成,其中 chroot 内部的成功查找优先。

    考虑添加-l(或--login) 来告知bash其行为就像已作为登录 shell 调用一样;即告诉它读取/etc/profile~/.bash_profile等。

  2. 问题是:“一旦我被 chroot 后,如何登录我的用户会话?”很可能字面上的答案,chroot /mnt /bin/login,会起作用。如果这有效,它将最像普通登录,因为它会要求用户名和密码。它(可能)是唯一的答案(无论如何),会导致whochroot 环境中的命令报告您的用户名(和登录时间等),并且可能是使用一些更多选项的最佳选择环境的深奥特征。 (我正在考虑 [推测] cron// crontabat命令passwd、文件系统配额、会计系统等。我不知道这些或任何其他软件是否或为什么可能不满足于仅仅查看您的真实数据UID。)当然,与前两个答案一样,这将针对chrooted 环境中定义的用户和密码进行操作。

    这可能行不通。我似乎隐约记得某些版本login 检测到它正在以非标准方式运行(像这样)并拒绝配合。但我不记得具体细节,而且在两分钟的搜索时间里我找不到任何东西。

相关内容