以root身份访问virtualbox虚拟机

问题描述 投票:0回答:1

我有以普通用户身份创建的虚拟机。我可以通过 GUI 和 python 绑定 (pyvbox) 访问它们。我有一个python脚本,我需要以root身份运行以访问其他资源。我无法通过 GUI 或 python 绑定以 root 身份访问任何虚拟机。我怎样才能从我的脚本中访问它们?

当我需要访问vbox时,我是否应该取消以root用户身份运行的脚本的权限,然后当我需要访问其他资源时再回到root用户?你会怎么做,这是个好主意吗?

python python-3.x virtualbox privileges
1个回答
1
投票

我找到了一个解决方案,它需要你想监控虚拟机的用户名称。

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。

© www.soinside.com 2019 - 2024. All rights reserved.