Автор Тема: libvirt + polkit + netgroups  (Прочитано 950 раз)

Оффлайн aleksey-v.

  • Завсегдатай
  • *
  • Сообщений: 347
libvirt + polkit + netgroups
« : 14.05.2020 12:39:26 »
Друзья, задумался как можно упростить управление 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?