我有以普通用户身份创建的虚拟机。我可以通过 GUI 和 python 绑定 (pyvbox) 访问它们。我有一个python脚本,我需要以root身份运行以访问其他资源。我无法通过 GUI 或 python 绑定以 root 身份访问任何虚拟机。我怎样才能从我的脚本中访问它们?
当我需要访问vbox时,我是否应该取消以root用户身份运行的脚本的权限,然后当我需要访问其他资源时再回到root用户?你会怎么做,这是个好主意吗?
我找到了一个解决方案,它需要你想监控虚拟机的用户名称。
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 就像你会作为vbox_user。