AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 803283
Accepted
Arseni Mourzenko
Arseni Mourzenko
Asked: 2016-09-16 05:35:08 +0800 CST2016-09-16 05:35:08 +0800 CST 2016-09-16 05:35:08 +0800 CST

如何在没有 sudo 的情况下列出 virsh 网络?

  • 772

我注意到一台使用 Debian 的机器上的一个奇怪行为,我无法在另一台运行 Ubuntu 的机器上重现。virsh当以普通用户的身份列出网络时,它会显示一个空列表:

~$ virsh net-list --all
 名称 状态 Autostart Persistent
-------------------------------------------------- --------

使用 运行相同的命令时sudo,它会显示默认连接:

~$ sudo virsh net-list --all
 名称 状态 Autostart Persistent
-------------------------------------------------- --------
 默认激活 否 是

文件本身的权限似乎设置正确:

~$ ls -l /etc/libvirt/qemu/networks
共 8 个
drwxr-xr-x 2 root root 4096 Jul 1 18:19 自动启动
-rw-r--r-- 1 root root 228 Jul 1 18:19 default.xml

用户属于kvm和libvirtd组。

怎么了?为什么我不能以普通用户的身份列出网络?

permissions sudo virsh
  • 4 4 个回答
  • 18751 Views

4 个回答

  • Voted
  1. Best Answer
    Arseni Mourzenko
    2016-09-16T07:37:05+08:002016-09-16T07:37:05+08:00

    看来:

    如果没有明确说明,virsh 二进制文件使用 'qemu:///session' URI(至少在 debian 下)。

    因此,不仅virsh net-list,而且实际上任何命令,包括virsh list,在使用sudo. 换句话说,virsh net-list使用的是用户范围而不是全局范围。

    这是有道理的;尝试创建默认连接然后启动它导致“网络已被接口 virbr0 使用”错误 - 在不知情的情况下,我正在启动第二个名为“默认”的连接,而一个已经在运行。

    解决方案很简单:

    virsh --connect qemu:///system net-list
    

    做我期望它做的事情,同时:

    virsh net-list
    

    没有。

    为什么Ubuntu机器没有问题?

    根据文档:

    如果 virsh 找到环境变量VIRSH_DEFAULT_CONNECT_URI集,它会默认尝试这个 URI。LIBVIRT_DEFAULT_URI但是,由于 libvirt 支持自身,因此不推荐使用此环境变量。

    确实,在 Ubuntu 机器上,似乎定义了第二个变量:

    ubuntu:~$ echo $VIRSH_DEFAULT_CONNECT_URI
    
    ubuntu:~$ echo $LIBVIRT_DEFAULT_URI
    qemu:///系统
    

    另一方面,在 Debian 机器上,没有设置这些变量:

    debian:~$ echo $VIRSH_DEFAULT_CONNECT_URI
    
    debian:~$ echo $LIBVIRT_DEFAULT_URI
    
    

    将这些变量之一设置为qemu:///system可能会起作用,但是,直接在virsh命令中指定连接字符串更容易(至少在编写脚本时)。

    • 23
  2. Orlando Nuske
    2019-07-01T14:35:35+08:002019-07-01T14:35:35+08:00

    在文件 /etc/libvirt/libvirt.conf 中取消注释此行

    uri_default = "qemu:///system"
    

    在 fedora 29 中对我来说已经足够了。

    编辑:正如这里所说的https://libvirt.org/uri.html对于非 root 用户,该文件也需要在 $XDG_CONFIG_HOME/libvirt/libvirt.conf

    在我的情况下是:

     ~/.config/libvirt/libvirt.conf
    

    所以我将文件复制到那里(在我的全新安装中),现在 virsh net-list 以非 root 用户身份工作,无需 espicify --connect

    • 15
  3. Martynas Saint
    2016-09-16T06:12:26+08:002016-09-16T06:12:26+08:00

    可以设置 virsh 与本地用户一起工作。更多信息在这里:

    https://major.io/2015/04/11/run-virsh-and-access-libvirt-as-a-regular-user/

    基本上你需要设置 polkit 规则并连接到 libvirtd 守护进程

    • 1
  4. thrig
    2016-09-16T06:10:30+08:002016-09-16T06:10:30+08:00

    从文档中,root(大部分)是必需的,并且正在与virsh一个守护进程聊天(而不是手动在目录中的文件中寻找/etc/libvirt,strace或者sysdig将确认):

       Most virsh operations rely upon the libvirt library being able to
       connect to an already running libvirtd service.  This can usually be
       done using the command service libvirtd start.
    
       Most virsh commands require root privileges to run due to the
       communications channels used to talk to the hypervisor.  Running as non
       root will return an error.
    

    那么为什么virsh list不返回错误可能是一个错误或需要在virsh(1)手册页中澄清......

    • 0

相关问题

  • 如何在 Exchange 2007 中设置资源邮箱日历的忙/闲权限?

  • 共享文件夹中某些文件的访问被拒绝错误

  • Bash 脚本:要求脚本以 root 身份运行(或使用 sudo)

  • 如何授予用户安装 Windows 服务的能力?

  • 限制用户向电子邮件地址发送电子邮件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve