Отвечая на свой вопрос. Самое простое и простое решение - sudoers. С регулярными выражениями sudoers мы можем делать много всего. Я просто добавил одно правило sudoer.
Сохраняйте имена всех гостевых машин таким образом, чтобы их можно было указать с помощью какого-либо регулярного выражения. В моем случае я оставил все гостевые машины, те, которыми я хочу управлять пользователями без полномочий root, начиная с vmname -.
Правило ниже позволяет пользователям без полномочий root запускать и получать консоль vm и не разрешать ее уничтожить.
Cmnd_Alias KVMCMD = /usr/bin/virsh list --all,/usr/bin/virsh start vmname*
Cmnd_Alias KVMBAD = virsh destroy vmname*
Надеюсь, это поможет тому, кто ищет подобное решение.
Для правильного RBAC вам понадобится более сложная платформа управления виртуальными машинами, чем libvirt, которая предназначена для управления жизненным циклом виртуальных машин, и мало что еще. Взгляните на oVirt.org для хорошего примера
I had success with using PolicyKit on CentOS 6.5 using the libvirt wiki:
http://wiki.libvirt.org/page/SSHPolicyKitSetup
The missing step to getting it to work with virsh:
is to add the following to your .bash_profile:
if test -x `which virsh`; then
export LIBVIRT_DEFAULT_URI=qemu:///system
fi
(this is from this post)
This setup also allows pretty seamless usage from virt-manager on a remote computer.