我想给我的朋友一个虚拟机在我的专用服务器上,我希望他能够重新启动虚拟机或更改iso – 所以基本上我想要的虚拟机托pipe提供商,如Linode相同的function。 我想最简单的解决scheme是给他一个shell帐户,但如何限制壳? 是否有可能限制libvirt为我的使用情况?
libvirt没有任何用户对单个虚拟机的访问控制,所以你最好的select是围绕virsh编写一系列的包装脚本(一个是重启VM,一个是停止,一个是启动,一个是更改ISO图像,以及任何你需要的),然后给你的朋友sudo从他的login帐户访问这些脚本。
包装脚本应该使用硬编码值(例如,用于VM名称)并仔细检查任何用户提供的数据。 例如,确保如果他提供ISO映像文件名称,那么它实际上是一个ISO映像,并且他已经读取了它的访问权限。
例如,如果VM被称为“FriendVM”,那么重启脚本可能如下所示:
#! / bin / sh的 #脚本名称:Reboot-FriendVM.sh virsh重新启动FriendVM
让他sudo访问该脚本将允许他只重新启动该特定的虚拟机。 他会像这样运行它: sudo Reboot-FriendVM.sh
围绕'virsh start','virsh destroy'的类似包装脚本很容易从中推断出来。 更改ISO映像的脚本会稍微复杂一些,留给读者练习:)
如果你不想编写很多小脚本,这个想法的另一个变种是写一个脚本与一个virsh能力的限制子集,只能在他的虚拟机上工作,并给他sudo访问权限。 比如把它叫做rvirsh。
这是简单的,简约的方式,只是足够完成工作,没有装饰。
如果你有更多的时间花费,你可能也想看看OpenStack,谷歌的ganeti,opennebula等虚拟化pipe理软件。 他们做的不仅仅是增加用户访问控制,而且学习它们需要花费大量的时间和精力。
我不知道有什么办法直接做到这一点,虽然你可以安装一个像Proxmox控制面板,并让他通过访问。
最遗憾的是,除了使用networking界面或编写自己的界面之外,没有办法稳定,“干净”和更新安全。
如果您已经使用libvirt,并遵循其他人提出的Web Panelbuild议,您可能会发现Karesansui有趣: http : //karesansui-project.info
Proxmox是AFAIK最简单和最合适的虚拟化环境pipe理解决scheme。
Ganeti + Ganeti网站pipe理员(目前正在学习)似乎也非常好,function强大。