仮想マシンを実行するために "users"グループを使用するようにlibvirtを設定しました。
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=
権限のないユーザーで仮想マシンを実行できますか?ディストリビューションはSlackware 14.2であり、もちろん私はユーザーグループに属しています。
ベストアンサー1
解決策を見つけてください。
まず、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ユーザーに対して何も返しません。
ps -o user,group,cmd -p 14123
USER GROUP CMD
nobody kvm /usr/bin/qemu-kvm -name guest=..