Xen

非 root 使用者的 Xen libvirt 訪問

  • April 12, 2019

我在 CentOS 6.6 機器上安裝了 Xen 和 libvirt。所有工具(virt-manager、virsh 等)都可以作為 root 完美執行(直接或通過 sudo),但我不能允許其他使用者連接(連接失敗/DBus 錯誤)。

我的配置

我遵循了通過創建組並通過 polkit 允許使用者訪問來允許使用者訪問的過程,所以我已經:

groupadd virtadmin
usermod -a -G virtadmin davec

我還將自己加入了 KVM 組(在某處找到了一個建議)。該組已創建,我在其中作為 id 輸出:

uid=500(davec) gid=500(davec) groups=500(davec),36(kvm),501(virtadmin)

為了在 polkit 中允許這樣做,我添加了文件 /etc/polkit-1/localauthority/50-local.d/50-libvert-remote-access.pkla 內容:

Remote libvirt SSH access]
Identity:unix-group:virtadmin
Action:org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

在這不起作用之後,一些Google搜尋告訴我較新的 polkit 版本(yum 告訴我我有 0.96)使用基於規則的方法,所以我還創建了一個文件夾 /etc/polkit-1/rules.d 並添加了文件80-libvirt-manage.rules 包含:

polkit.addRule(function(action, subject) {
 if (action.id == "org.libvirt.unix.manage" && 
 subject.local && 
 subject.active && 
 subject.isInGroup("virtadmin")) {
     return polkit.Result.YES;
 }
});

現在可能是這些問題存在,但我找不到日誌或任何似乎可以測試/驗證/觀察它們的方式。

因此,根據我找到的文件,使用該設置使用者 davec 應該能夠訪問 libvirt 並執行 virsh 或 virt-manager。

錯誤

[davec@polar rules.d]$ virsh -c xen:///
error: failed to connect to the hypervisor
error: internal error: DBus support not compiled into this binary

這與我嘗試連接時 virt-manager 給出的錯誤完全相同。

大多數關於 DBus 錯誤的線上資訊是指管理程序執行/任何人連接但根連接完美的問題。

[davec@polar rules.d]$ sudo virsh -c xen:///
Welcome to virsh, the virtualization interactive terminal.

完全相同的情況適用於 SSH 連接(這並不奇怪,因為我相信當您使用 xen+ssh URI 時 SSH 只是隧道),root 非 root 可以工作,但組添加的使用者不能。

毫無疑問,這很簡單,我是個白痴,但是……在 Google 不再是我的朋友幾天之後;任何幫助真正感激。

答案

請參閱下面的 c4f4t0r 的正確(和接受的)答案,該答案贏得了賞金,但只是對於任何閱讀此內容的人的資訊,結果證明**與 polkit 無關,**它似乎沒有配置/編譯/與我的 libvirtd 一起使用。

是一個內置權限(套接字權限)問題。

我認為你可以這樣做:

/etc/libvirt/libvirtd.conf

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
auth_unix_rw = "none"

之後重新啟動 libvirtd 守護程序

這對我有用:

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"
auth_unix_rw = "none"

引用自:https://unix.stackexchange.com/questions/198768