Как я могу запретить virt-manager запрашивать пароль root?

18

При запуске virt-manager запрашивает пароль пользователя root.

Похоже, что virt-manager заставляет демон libvirtd запустить pkcheck с несколькими аргументами, которые затем показывают это диалоговое окно аутентификации. Так что это PolicyKit, который просит пароль root.

Официальный сайт (libvirt.org) описывает, как определить правило PolicyKit, чтобы избавиться от запроса пароля:

$ 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

Подкаталог "localauthority" не существует. Создание и размещение файла с таким именем и содержимым (libvirt -> my group name) там, похоже, не имеет никакого эффекта. Также есть файл по умолчанию, который использует синтаксис JavaScript:

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

Этот пакет установлен в системе, плюс несколько интерфейсов DE:

polkit-0.107-4.fc18.x86_64

Видимо пример конфигурации на libvirt.org устарел?

Какая конфигурация необходима, чтобы избавиться от запроса пароля (для определенной группы пользователей)?

basic6
источник

Ответы:

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;
    }
});

Вам нужно будет выполнить общие шаги, включая перезапуск policykit и запуск нового сеанса с соответствующим пользователем после добавления его в libvirtгруппу.

Похоже, что ресурс посвящен Fedora 18, но в нем уже используется синтаксис javascript, поэтому он, скорее всего, подходит и для Fedora 19.

Ссылки:

Павел Шимерда
источник
1
Это решение работает! Спасибо за ссылки. Награда присуждается.
senorsmile
Извините за неправильное форматирование, исправлено.
Павел Шимерда
Как это сравнить с добавлением пользователя в группу libvirt? Я протестировал добавление пользователя в группу libvirt, а затем дополнительная аутентификация не требовалась.
Jwbensley
1
@jwbensley Метод polkit является динамическим и дает разрешения владельцу активного локального сеанса. Групповой способ является статическим и дает привилегию этому конкретному пользователю. Выберите ваши пути, как вы считаете нужным.
Павел Шимерда
1

Запрос пароля был сделан для безопасности системы, поэтому, если вы сделаете это, это может сделать его уязвимым.

  1. Создайте Groupгруппу на своей машине. или вы можете запустить эту "sudo groupadd -r Group"

  2. Вы можете добавить любого пользователя в эту системную группу, выполнив «sudo usermod -a -G Group User»

  3. Теперь вам нужно создать нашу политику PolicyKit, которая позволит пользователям Groupзапускать virt-manager

вы создадите файл по этому пути: "/ etc / polkit-1 / localauthority / 50-local.d / 50-org. Group-libvirt-local-access.pkla"
и поместите в него строки ниже

[Разрешить групповые Groupразрешения на управление libvirt]
Identity = unix-group: Group
Action = org.libvirt.unix.manage
ResultAny = yes
ResultInactive = yes
ResultActive = yes

Это все, что вам нужно было сделать, теперь вы можете запустить его. И я надеюсь, что это поможет вам.

poqdavid
источник
Это старое решение. Это решение НЕ работает в более новых операционных системах Linux на основе systemd, таких как Fedora 19 или Current Arch. (Я только что проверил. Там даже нет локального каталога полномочий, и при создании подпапка и указанный файл ничего не делают).
senorsmile
@senorsmile Вы подали отчет об ошибке в Fedora 19?
Павел Шимерда