在Linux上将virt-manager用作非root用户

时间:2020-02-23 14:31:29  来源:igfitidea点击:

大家好。我已经使用KVM很久了。每次我尝试将virt-manager用作非root用户时,都必须输入sudo密码。这不是一个问题,但是如果我们大多数时候使用virt-manager,可能会很无聊和烦人。

我将展示了一种简单的方法,通过仅创建libvirt组并向其中添加标准用户帐户,即可将virt-manager用作非root用户。不要浪费太多时间,让我们潜入。

要将virt-manager用作非root用户,请执行以下步骤:

创建要使用的unix组

首先检查组是否已经存在,如果不存在则创建它

sudo getent group | grep libvirt

一些发行版可能正在使用libvirtd。

sudo getent group | grep libvirtd

如果不存在,请将其添加为系统组。

sudo groupadd --system libvirt

将用户帐户添加到libvirt组

现在该组可用,将用户帐户添加到该组。

sudo usermod -a -G libvirt $(whoami)
newgrp libvirt

验证是否已将用户添加到libvirt组。

$id $(whoami)
uid=1000(jmutai) gid=1000(jmutai) groups=1000(jmutai),998(wheel),992(kvm),988(storage),968(libvirt),108(vboxusers)

编辑libvirtd配置文件以添加组

打开文件/etc/libvirt/libvirtd.conf进行编辑。

sudo vim /etc/libvirt/libvirtd.conf

将UNIX域套接字组所有权设置为libvirt(在line85附近)

unix_sock_group = "libvirt"

设置R/W套接字的UNIX套接字权限(在第102行附近)

unix_sock_rw_perms = "0770"

进行更改后,重新启动libvirt守护程序。

sudo systemctl restart libvirtd.service

检查服务状态。

$systemctl status libvirtd.service    
 ● libvirtd.service - Virtualization daemon
    Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: disabled)
    Active: active (running) since Fri 2019-04-19 08:48:13 EAT; 1h 16min ago
      Docs: man:libvirtd(8)
            https://libvirt.org
  Main PID: 31709 (libvirtd)
     Tasks: 26 (limit: 32768)
    Memory: 64.7M
    CGroup: /system.slice/libvirtd.service
            ├─  754 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leases>
            ├─  755 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leases>
            ├─  777 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/docker-machines.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvir>
            ├─  778 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/docker-machines.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvir>
            ├─25924 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/vagrant-libvirt.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvir>
            ├─25925 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/vagrant-libvirt.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvir>
            ├─25959 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/fed290.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leasesh>
            ├─25960 /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/fed290.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leasesh>
            └─31709 /usr/bin/libvirtd

启动virt-manager

从命令行或者"开始"菜单中启动Virtual Machine Manager。

$virt-manager

我们应该能够创建VM,而不会出现权限错误。

我们应该能够以非root用户身份使用virt-manager。如果不是,请尝试阅读yourlibvirtd.conf文件以查看相关部分以进行修改。