Доступ к виртуальным машинам Virtualbox как root - PullRequest
1 голос
/ 27 апреля 2020

У меня есть виртуальные машины, созданные как обычный пользователь. Я могу получить к ним доступ через GUI и через привязки python (pyvbox). У меня есть сценарий python, который мне нужно запустить как root для доступа к другим ресурсам. Я не могу получить доступ ни к каким виртуальным машинам через привязки GUI или python как root. Как я могу получить к ним доступ из моего сценария?

Должен ли я удалять привилегии из моего скрипта, запущенного как root, когда мне нужно получить доступ к vbox? а затем go назад к root пользователю, когда мне нужно получить доступ к другим ресурсам? Как бы вы это сделали, и это хорошая идея?

1 Ответ

1 голос
/ 28 апреля 2020

Я нашел решение, которое требует имя пользователя, для которого вы хотите контролировать виртуальные машины:

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.

...