我想构建一台专用机器,用于测试我们公司的候选人。该机器应运行 Linux,并带有监听连接的 SSH 服务器。
我想向每个候选人发送一个用户和密码(相同的)。
连接后,系统会显示一条消息,说明如何继续测试并提交作业。如果断开连接,所有更改都将被恢复,文件、历史记录等所有内容都需要被删除。
我还想支持使用相同凭据进行连接的多个用户。所以我想我需要实现某种为每个 SSH 连接动态创建的虚拟化环境。
实际上,在互联网战争游戏中确实存在这种实现(例如http://overthewire.org/wargames/bandit/bandit0.html)
有什么想法可以实现这个目标吗?
答案1
每个用户的消息可以是 $HOME/.bashrc 中的 echo 语句或类似语句。即使用户更改了该文件,他们也需要先登录才能执行此操作,即使这样他们也已经看到了该消息。更好的方法可能是 中的某些内容/etc/motd
。这就是该文件的用途。
看看帕特里克的在这里回答用于在注销时执行某些操作。您只需重新启动虚拟机,让虚拟机管理程序自动从干净的快照/冻结映像/其他任何内容启动即可。就我个人而言,我不会为此使用 .bash_logout,因为需要花点功夫才能确保用户无法修改/删除/重命名/符号链接文件。PAM 会更万无一失。
如果您不想重新启动虚拟机,也许可以# rsync -av /mnt/ro/home/ /home/ --delete
在注销后将包含原始系统文件副本的 ar/o 分区 rsync'd () 到 $HOME/。