Linux

如何使用 libvirt 的 polkit?

  • October 18, 2016

我剛剛看到 libvirt 的 polkit 參考頁面並創建了以下規則

//content of /etc/polkit-1/rules.d/50-libvirt.rules
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.api.domain.getattr" &&
   subject.user == "dravigon") {
     if (action.lookup("connect_driver") == 'QEMU' &&
         action.lookup("domain_name") == 'debian8') {
       return polkit.Result.YES;
     } else {
       return polkit.Result.NO;
     }
}

});

希望限制使用者 dravigon 只能從 qemu/kvm 驅動程序訪問域 debian8

但它根本不起作用 誰能說出我哪裡出錯了

只是按照fedora polkit頁面中的說明發現他回答

我必須添加另一個塊似乎只有第二個塊沒有第一個塊是無用的

// Allow passwordless connection to qemu:///system
polkit.addRule(function(action, subject) {
 if (action.id == "org.libvirt.unix.manage" &&
     subject.user == "MY-USER") {
     return polkit.Result.YES;
 }
});
// Give full access to 'test-day-vm'
polkit.addRule(function(action, subject) {
   if (action.id.indexOf("org.libvirt.api.domain.") == 0 &&
       subject.user == "MY_USER") {
         if (action.lookup("connect_driver") == 'QEMU' &&
             action.lookup("domain_name") == 'test-day-vm') {
           return polkit.Result.YES;
         } else {
           return polkit.Result.NO;
         }
   }
});

參考:https ://fedoraproject.org/wiki/QA:Testcase_Virt_ACLs

引用自:https://serverfault.com/questions/809378