【问题标题】:Access virtualbox VMs as root以 root 身份访问 virtualbox 虚拟机
【发布时间】:2020-08-11 06:43:12
【问题描述】:
我以普通用户的身份创建了虚拟机。我可以通过 GUI 和 python 绑定(pyvbox)访问它们。我有一个 python 脚本,我需要以 root 身份运行才能访问其他资源。我无法通过 GUI 访问任何虚拟机,也无法以 root 身份访问 python 绑定。如何从我的脚本中访问它们?
每当我需要访问 vbox 时,是否应该从以 root 身份运行的脚本中删除权限?然后在我需要访问其他资源时返回 root 用户?你会怎么做?这是个好主意吗?
【问题讨论】:
标签:
python
python-3.x
virtualbox
privileges
【解决方案1】:
我找到了一个解决方案,该解决方案需要您要监控 VM 的用户名:
import os, pwd, virtualbox
vbox_user="my_user"
pw=pwd.getpwnam(vbox_user)
root_uid=os.getuid()
# change location of vbox settings file
os.environ["XDG_CONFIG_HOME"]="/home/{}/.config".format(vbox_user)
# change uid to user's
# setting euid alone does not work
os.setresuid(pw.pw_uid, pw.pw_uid, uid)
# create your vbox
vbox=virtualbox.VirtualBox()
# change back to initial uid
os.setresuid(uid, uid, uid)
您可以像使用 vbox_user 一样使用 vbox。