Друзья, задумался как можно упростить управление QEMU/KVM через libvirt.
Надо дать каждому пользователю возможность стартовать или перезагружать его машины, не выдавая суперправ через sudo.
Настройка через PolKit и файлы /etc/polkit-1/rules.d прекрасно подходят. С их помощью можно настроить работу virsh, показывать пользователю только его машины, разрешать перезагружать только их.
Однако пользователей много, как и виртуальных машин.
Создавать функции через addRule и в них кодировать матрицы кому что можно делать - вполне рабочий вариант. Но такую конфигурацию непросто обслуживать.
И возникла мысли использовать Netgroups. На первый взгляд, вариант идеальный, netgroup как раз состоят из пользователей и компьютерам.
Плюс у netgroup ещё и в том, что их можно вкладывать одну в другую.
Но умеет ли PolKit читать все три компонента netgroup через метод IsInNetGroup? У кого-нибудь получилось?
Ведь если заработает, можно создать такую нетгруппу
vmpermissions (vm01,user01,) (vm02,user01,) (vm03,user01,) (vm04,user02,) (vm05,user02,) (vm05,user03,) (vm06,user04,)
По-моему, отлично передаётся матрица распределения прав. Но как заставить работать это через PolKit?