Thank you for taking the time to respond. I want to mention that I don't
speak English, and it's difficult for me to understand using a translator.

In the file */etc/libvirt/libvirtd.conf*, I have the following:
access_drivers = [ "polkit" ]


The *virtqemud* and *virtnetworkd* services are not installed. I used the
version from the Debian 12 repositories.

systemctl status virtnetworkd.socket
Unit virtnetworkd.socket could not be found.

systemctl status virtqemud.socket
Unit virtqemud.socket could not be found.

In the file */etc/libvirt/qemu.conf*, the default configuration is present.

Best regards.

El jue, 6 feb 2025 a las 20:48, Rodrigo Prieto (<rodrigoprieto2...@gmail.com>)
escribió:

> Thank you for taking the time to respond. I want to mention that I don't
> speak English, and it's difficult for me to understand using a translator.
>
> In the file */etc/libvirt/libvirtd.conf*, I have the following:
> access_drivers = [ "polkit" ]
>
>
> The *virtqemud* and *virtnetworkd* services are not installed. I used the
> version from the Debian 12 repositories.
>
> systemctl status virtnetworkd.socket
> Unit virtnetworkd.socket could not be found.
>
> systemctl status virtqemud.socket
> Unit virtqemud.socket could not be found.
>
> In the file */etc/libvirt/qemu.conf*, the default configuration is
> present.
>
> Best regards.
>
> El jue, 6 feb 2025 a las 12:55, Martin Kletzander (<mklet...@redhat.com>)
> escribió:
>
>> On Fri, Jan 31, 2025 at 03:34:03AM -0300, Rodrigo Prieto wrote:
>> >Hello,
>> >
>> >I am configuring Polkit using an example I found on the web. It correctly
>> >displays the assigned domain for a given user, but when I try to start
>> the
>> >VM, I get the following error:
>> >
>> >error: Failed to start domain 'debian12'
>> >error: access denied: 'network' denied access
>> >
>> >Here is my configuration:
>> >
>> >polkit.addRule(function(action, subject) {
>> >  if (action.id == "org.libvirt.unix.manage" &&
>> >      subject.user == "lolo") {
>> >      return polkit.Result.YES;
>> >  }
>> >});
>> >polkit.addRule(function(action, subject) {
>> >    if (action.id.indexOf("org.libvirt.api.domain.") ==  0 &&
>> >        subject.user == "lolo") {
>> >          if (action.lookup("connect_driver") == 'QEMU' &&
>> >              action.lookup("domain_name") == 'debian12') {
>> >            return polkit.Result.YES;
>> >          } else {
>> >            return polkit.Result.NO;
>> >          }
>> >    }
>> >});
>> >
>>
>> So doing this allows you to do anything with debian12 domain on the QEMU
>> connection driver.
>>
>> >To grant network access, I have to configure the following:
>> >
>> >polkit.addRule(function(action, subject) {
>> >    if (action.id.indexOf("org.libvirt.api.network") == 0 &&
>> >        subject.user == "lolo") {
>> >        return polkit.Result.YES;
>> >    }
>> >});
>> >
>>
>> Adding this allows you to do anything with any network.  This rule does
>> omit a condition similar to the above one from the api.domain rule.
>>
>> >The problem with the previous configuration is that it allows full access
>> >to the network, requiring the following configuration:
>> >
>>
>> *to all the networks
>>
>> >polkit.addRule(function(action, subject) {
>> >    if ((action.id == "org.libvirt.api.network.stop" ||
>> >         action.id == "org.libvirt.api.network.delete" ||
>> >         action.id == "org.libvirt.api.network.write") &&
>> >        subject.user == "lolo") {
>> >        return polkit.Result.NO;
>> >    }
>> >});
>> >
>> >By default, shouldn't network access behave like domains or pools, which
>> >cannot be deleted?
>>
>> Can you not?  The domain undefine API checks domain:delete ACL with the
>> domain name and network undefine API checks network:delete ACL with the
>> network name.  I'll have to test it, but in the meantime could you try
>> reproducing that with the same polkit rules (obviously modified to fit
>> the domain/network difference)?
>>
>> >I tested it on Libvirt 9.0.0 and 10.0.0
>> >
>>
>> I did not find any difference between 9.0.0 and the current master with
>> a quick git-fu.
>>
>> I tested it on current git master and it works fine, the user can
>> undefine both the network and the domain, but only the one named as
>> specified.
>>
>> >If you can help me, I would really appreciate it.
>>
>> Be sure to check that both virtqemud and virtnetworkd use polkit as
>> their access driver in their respective configs.
>>
>> Have a nice day,
>> Martin
>>
>

Reply via email to