PVEでGPUをroot@pam以外でも変える方法

2024/10/25に公開

はじめに

Proxmox VEで複数あるGPUの管理を行いたいと考えました.
しかし,デフォルトの設定ではroot@pam以外のユーザーはGPUの変更ができません.

そのためこの回避方法を紹介します.

方法

/usr/share/perl5/PVE/API2/Qemu.pmcheck_hostpci_perm以下のように編集します.

my sub check_hostpci_perm {
    my ($rpcenv, $authuser, $vmid, $pool, $opt, $value) = @_;

    return 1 if $authuser eq 'root@pam';

    my $device = PVE::JSONSchema::parse_property_string('pve-qm-hostpci', $value);
    if ($device->{host}) {
-    die "only root can set '$opt' config for non-mapped devices\n";
+    #die "only root can set '$opt' config for non-mapped devices\n";
+    $rpcenv->check_full($authuser, "/mapping/pci/$device->{mapping}", ['Mapping.Use']);
+    $rpcenv->check_vm_perm($authuser, $vmid, $pool, ['VM.Config.HWType']);
    } elsif ($device->{mapping}) {
     $rpcenv->check_full($authuser, "/mapping/pci/$device->{mapping}", ['Mapping.Use']);
     $rpcenv->check_vm_perm($authuser, $vmid, $pool, ['VM.Config.HWType']);
    } else {
     die "either 'host' or 'mapping' must be set.\n";
    }

    return 1;
}

これにより,Mapping.Useの権限を持つユーザーはGPUの変更ができるようになります.

Discussion