设置虚拟机登录而不是本地登录

设置虚拟机登录而不是本地登录

我之前有一个问题,它与此相关,一个正在寻找正确的程序,这个正在寻找如何实施。如果您需要背景故事,请参阅我的第一个问题

我有一个本地设备。我是唯一一个我想拥有“本地访问权限”的人。让我们将此设备称为 charles.local

我想要它,所以当我执行 addusr bob 时,它会启动一个 VM bob.charles.local

当鲍勃在计算机前登录时,他会进入他的小环境,而不是

我知道如何启动虚拟机,带有操作系统的完整实例,这不是我想要做的,但我可以在需要的地方制作模组,我知道如何使用 Linux 管理本地计算机,我知道如何 fdisk 创建循环开发者的。

  1. init 是否能够处理我想要的登录过程,因此当登录屏幕弹出并且 bob 登录时,它会自动将他放入虚拟机中,或者我是否需要一个单独的登录服务器,例如 kerberus?
  2. 是否可以启动一个只有 1 个用户的虚拟机,无需添加其他用户,并使其看起来像鲍勃刚刚像平常一样登录到计算机。
  3. 我能够追踪、skel、登录、注销、adduser、deluser、passwd、shadow、配置文件,我是否需要修改 initd 配置?我还需要其他配置才能让这个球运行吗?
    1. 除了 VMM 之外,我还需要任何其他特定软件吗?

我正在尝试进行本地设备设置,以便班级可以登录到机器,并且对实际机器有 0 访问权限,这样他们就可以在不干扰其他学生的情况下修补 root,并且只需最少的输入...基本上,他们唯一可以输入的本地计算机是用户名和密码。其他一切都将在他们的环境中处理。

答案1

我没有足够的观点来评论,但这也有可能回答你的问题。

如果我理解正确的话,您希望允许本地用户登录,并且一旦用户登录,就从头开始启动新的虚拟机并自动配置同名的用户会话?如果我正确理解你的要求的话,那可以很快得到漂亮的头发。

这个怎么样,这听起来像你的预期目标——“信息亭”模式,除了用户拥有无限的本地权力,甚至可以摧毁整个操作系统,但它很容易重置。 (在这种情况下,自动进行。)我认为,唯一的区别是不涉及特定的单个用户会话,因为要使这个想法发挥作用,实际上不需要单个用户会话,而且实际上使事情变得复杂。 (但是,如果需要单个用户会话,那么至少这个解决方案仍然可以让您朝着正确的方向开始。想想“所有用户都可以访问的只读、不可变的基础 VM 磁盘映像,但每个用户都有自己的 VM”定义文件和读/写差异磁盘,两者都会在每次登录时被删除和恢复。)

首先一些快速定义:

  • “主机”或“机器”:物理机器。可能运行的是 Windows、MacOS 或 Linux,这应该不重要——每一个都可以这样配置,尽管如何拦截其中任何一个的注销和关闭并不总是显而易见的。 (我知道两者都可以在 Windows 和 Linux 中完成,并且强烈怀疑在 MacOS 中。所有这些都可以配置为启动时自动登录。)

  • “VM”、“虚拟机”或“来宾”:在主机上运行的虚拟机。听起来,您希望它是 Linux,但它也可以很容易是 Windows,除了潜在的许可问题。 (例如,如果用户搞砸了许可,即使操作系统本身从检查点完全重新启动,这种搞砸的情况也会持续存在。)

每台主机都将有一个“用户”会话,并且在该用户会话中,有一个透明的访客会话。用户将仅看到或必然知道访客会话的存在。 (但是主机会话的安全性不应该——也不必——依赖于这种模糊性。)

一般步骤:

  1. 将主机设置为在启动时自动登录到一个锁定的用户帐户,例如“vmuser”。停用会话超时/锁定和屏幕保护程序。 (屏幕断电可以,但不锁定会话。)

  2. 为该用户会话创建一个虚拟机,其中包含不可变磁盘和差异文件或要回滚到的快照。

  3. 在初始主机登录(启动时)时,让登录脚本以全屏模式启动虚拟机会话(使用晦涩的重新定义的“主机”键。例如滚动锁)。该脚本应该等到虚拟机关闭,因为稍后它还有更多工作要做。

  4. 然后,该虚拟机还会自动登录到 root 或具有管理员权限的用户。

  5. 访客注销脚本:关闭整个虚拟机。

  6. VM 关闭后,您的登录脚本将恢复。它将回滚到预定义的快照。如果主机用户会话没有结束,则该脚本应再次启动虚拟机。 (然后它会再次自动登录,然后您会返回并滚动一个全新的会话。)

  7. 主机注销脚本:您需要以多种可能的方式之一与登录脚本进行通信,以中止它,或者告诉它在执行回滚操作后不要启动虚拟机备份。无论哪种方式,您想要发生的是关闭虚拟机电源(即使“硬”关闭电源也是可以接受的)。将虚拟机回滚到快照。然后,要么让主机再次自动登录(这需要服务或守护进程监视,并导致干净恢复的虚拟机重新启动),要么完全关闭主机电源。

  8. 如果用户关闭主持人,与注销时会发生同样的事情(因为用户会话首先注销),除非您希望与该脚本通信以抢先重新登录,或关闭主机(冗余)。

  9. 每当主机用户会话登录时(具有讽刺意味的是,这在时间方面可能比在主机启动时执行此操作更可靠),登录脚本应始终在启动之前将虚拟机回滚到快照(或至少检查以确保) ,以防万一上次没有完全关闭。或者,如果您真的想要变得健壮,主机启动脚本可以始终执行所需的所有清理工作——删除可能用于进程间通信的任何文件、回滚虚拟机以防万一等等——如果在所有这些过程中不可避免地启动登录脚本,则登录脚本会等到该过程完成后再继续。

这样,用户可以在虚拟机中执行任何他们想要的操作,包括“rm -rf /”,并且虚拟机关闭、主机用户会话注销或主机重新启动将自动恢复它。只要主机用户会话被相当好的锁定和安全,并且不可变的 VM 磁盘不可由用户删除(这​​将是以这种方式设置而不是快照的一个很好的理由),那么对于用户来说真的很难搞砸系统,即使他们突破了虚拟机。 (也就是说,任何具有物理访问权限的人都可以危害计算机。而且应该不言而喻 - 因此我希望不需要说 - 对主机操作系统的任何利用也可能会危害您的解决方案。但至少就永久客户操作系统损坏而言,对客户的利用大多没有实际意义,因为无论如何它都会回滚/重置。)

我非常有信心沿着这些思路进行的事情是可能的,相当接近所概述的内容——因为我知道每个单独的步骤都是可能的,并且我自己已经完成了其中的许多步骤。

您的一般需求是“信息亭模式”的概念,您可以通过谷歌搜索。诚然,信息亭模式通常还涉及锁定用户的体验,这与您想要的相反,但可能有一些想法可以让您接近,或者与此类似但使用不同的技术(例如容器)。

祝你好运!

相关内容