Qemu
Slackware 和 libvirt 與 qemu,為什麼 vm 以 root 身份執行?
我將 libvirt 配置為使用“使用者”組來執行 vm
grep -w users /etc/libvirt/qemu.conf # unix socket. This prevents unprivileged access from users on the # unix socket. This prevents unprivileged access from users on the group = "users" # deployments. It is strongly recommended that users update their
我可以毫無問題地從使用者啟動 vm,它們執行.. 但是 ps 說.. 以 root 身份執行,而不是以我的非特權使用者身份執行,為什麼?
ps -ef|grep qemu root 15248 1 33 14:53 ? 00:01:05 /usr/bin/qemu-kvm -name guest=
可以以非特權使用者身份執行 vm 嗎?發行版是 slackware 14.2,當然我在使用者組
找到解決方案。
首先在 libvirt SlackBuild 上,添加或修改這些行
VIRTGROUP=${VIRTGROUP:-kvm} ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --bindir=/usr/sbin \ --sbindir=/usr/sbin \ --disable-static \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/man \ --docdir=/usr/doc/$PRGNAM-$VERSION \ --enable-static=no \ --enable-shared=yes \ --with-qemu-group=$VIRTGROUP \ --with-qemu-user=nobody \ --without-hal \ --with-interface \ --with-lxc \ --with-udev \ --with-storage-disk \ --with-storage-gluster \ --with-storage-lvm \ --with-init-script=none # udev rules mkdir -p $PKG/etc/udev/rules.d/65-kvm.rules install -D -m 0644 $CWD/65-kvm.rules $PKG/etc/udev/rules.d/65-kvm.rules
udev規則必須是這樣的
cat /etc/udev/rules.d/65-kvm.rules KERNEL=="kvm", NAME="%k", GROUP="kvm", MODE="0660"
不要忘記 polkit 部分,否則 libvirt 只能以 root 身份執行
cat /usr/share/polkit-1/rules.d/50-libvirt.rules // Allow any user in the 'libvirt' group to connect to system libvirtd // without entering a password. polkit.addRule(function(action, subject) { if (action.id == "org.libvirt.unix.manage" && subject.isInGroup("libvirt")) { return polkit.Result.YES; } });
重新啟動 libivirt ps 後為 qemu 使用者返回 nobody
ps -o user,group,cmd -p 14123 USER GROUP CMD nobody kvm /usr/bin/qemu-kvm -name guest=..