Comment empêcher virt-manager de demander le mot de passe root?


18

Lors du démarrage de virt-manager, il demande le mot de passe root.

Il semble que virt-manager oblige le démon libvirtd à exécuter pkcheck avec quelques arguments, qui affiche ensuite cette boîte de dialogue d'authentification. C'est donc PolicyKit qui demande le mot de passe root.

Le site officiel (libvirt.org) décrit comment définir une règle PolicyKit pour se débarrasser de l'invite de mot de passe:

$ sudo cat /etc/polkit-1/localauthority/50-local.d/50-org.example-libvirt-remote-access.pkla
[libvirt Management Access]
Identity=unix-group:libvirt
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Le sous-répertoire "localauthority" n'existait pas. Le créer et mettre un fichier avec ce nom et ce contenu (libvirt -> mon nom de groupe) là-dedans ne semble pas avoir d'effet. En outre, il existe un fichier par défaut, qui utilise la syntaxe JavaScript:

/etc/polkit-1/rules.d/50-default.rules

Ce package est installé sur le système, plus quelques frontaux DE:

polkit-0.107-4.fc18.x86_64

Apparemment, l'exemple de configuration sur libvirt.org est obsolète?

Quelle configuration est nécessaire pour se débarrasser de l'invite de mot de passe (pour un groupe d'utilisateurs spécifique)?

Réponses:


16

/etc/polkit-1/rules.d/10.virt.rules:

polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage"
            && subject.local
            && subject.active
            && subject.isInGroup("libvirt")) {
        return polkit.Result.YES;
    }
});

Vous devrez effectuer des étapes courantes, notamment le redémarrage de policykit et le démarrage d'une nouvelle session avec l'utilisateur respectif après l'avoir ajouté au libvirtgroupe.

Il semble que la ressource concerne Fedora 18 mais elle utilise déjà la syntaxe javascript, donc elle est probablement aussi valable pour Fedora 19.

Liens:


1
Cette solution fonctionne! Merci aussi pour les liens. Bounty décerné.
senorsmile

Désolé pour la mauvaise mise en forme, corrigé cela.
Pavel Šimerda

Comment cela se compare-t-il à l'ajout de l'utilisateur au groupe libvirt? J'ai testé l'ajout de l'utilisateur au groupe libvirt, puis l'authentification supplémentaire n'était pas requise.
jwbensley

1
@jwbensley La méthode polkit est dynamique et donne les autorisations au propriétaire de la session locale active. La méthode de groupe est statique et donne le privilège à cet utilisateur spécifique. Choisissez vos voies comme bon vous semble.
Pavel Šimerda

1

L'invite de mot de passe a été faite pour la sécurité du système, donc si vous le faites, cela pourrait le rendre vulnérable.

  1. Créez le Groupgroupe sur votre machine. ou vous pouvez exécuter ce "sudo groupadd -r Group"

  2. Vous pouvez tout utilisateur de ce groupe système en exécutant "sudo usermod -a -G Group User"

  3. Vous devez maintenant créer notre politique PolicyKit qui permettra aux utilisateurs de Groupd'exécuter virt-manager

vous allez créer un fichier à ce chemin: "/ etc / polkit-1 / localauthority / 50-local.d / 50-org. Group-libvirt-local-access.pkla"
et vous y mettrez des lignes ci-dessous

[Autoriser Grouples autorisations de gestion de libvirt de groupe ]
Identity = unix-group: Group
Action = org.libvirt.unix.manage
ResultAny = yes
ResultInactive = yes
ResultActive = yes

C'est tout ce que vous deviez faire maintenant, vous pouvez l'exécuter. Et j'espère que cela vous aidera.


C'est l'ancienne solution. Cette solution ne fonctionne PAS sur les systèmes d'exploitation Linux basés sur Systemd plus récents, tels que Fedora 19 ou Current Arch. (Je viens de le tester. Il n'y a même pas de répertoire localauthority, et la création, le sous-dossier et le fichier spécifié ne font rien).
senorsmile

@senorsmile Avez-vous déposé un rapport de bogue avec Fedora 19?
Pavel Šimerda
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.