Привет всем. Кажется, я нашел баг с proxmox api. Вот powershell скрипт, который я написал и который использует Powershell модуль Corsinvest.ProxmoxVE.Api для создания vm:
Код:
$apikey = 'root@pam!api=Idontthinkso'
$key = Connect-PveCluster -HostsAndPorts 192.168.1.15:8006 -SkipCertificateCheck -ApiToken $apikey
$sata = @{}
$sata.Add("0", "fourt:100")
$sata.Add("1", "fourt:0,import-from=/mnt/pve/iso/template/iso/SERVER.VHD")
$ide = @{}
$ide.Add("2", "big:iso/virtio-win-0.1.266.iso,media=cdrom")
$usb = @{}
$usb.Add("0", "spice,usb3=1")
$net = @{}
$net.Add(0, "model=e1000,bridge=vmbr0,firewall=1")
$vmid = 100
New-PveQemu -Memory "4096" -Bios ovmf -Cpu host -Cores 4 -Machine q35 -Node prox -Pool res -Ostype win10 -Scsihw virtio-scsi-pci -Vmid 100 -Name "PB99976-P05" -Storage fourt -Vga "type=qxl,memory=128" -NetN $net -Efidisk0 "fourt:1,efitype=4m,pre-enrolled-keys=1" -Agent "1" -SataN $sata -IdeN $ide -Boot "order=sata1;sata0;ide2" -UsbN $usb
Как видите, один из дисков, который я определил, импортирует существующий дисковый образ. Упомянул я это просто потому, что это часть скрипта, на которую ссывается сообщение об ошибке. Когда я пытаюсь запустить вышеуказанный скрипт, proxmox api возвращает следующую ошибку:
Код:
Only root can pass arbitrary filesystem paths. at /usr/share/perl5/PVE/Storage.pm line 561.
Путь, на который ссылается ошибка, — это путь, который я передал свойству "import-from" при создании одного из дисков. Я считаю эту ошибку странной, потому что, как видите сами, api ключ, который я использую в моем скрипте (который я, конечно, замаскировал), был создан для аутентификации пользователя root. В качестве теста я попытался запустить вышеуказанный скрипт снова, но на этот раз я аутентифицировался на proxmox сервере, используя фактические учетные данные учетной записи root, и скрипт сработал отлично. Итак, похоже, что, с точки зрения разрешений, необходимых для "передачи произвольного пути к файловой системе" в proxmox api, аутентификация на proxmox сервере с помощью api ключа, сгенерированного пользователем root, не имеет прав пользователя root.
Код:
$apikey = 'root@pam!api=Idontthinkso'
$key = Connect-PveCluster -HostsAndPorts 192.168.1.15:8006 -SkipCertificateCheck -ApiToken $apikey
$sata = @{}
$sata.Add("0", "fourt:100")
$sata.Add("1", "fourt:0,import-from=/mnt/pve/iso/template/iso/SERVER.VHD")
$ide = @{}
$ide.Add("2", "big:iso/virtio-win-0.1.266.iso,media=cdrom")
$usb = @{}
$usb.Add("0", "spice,usb3=1")
$net = @{}
$net.Add(0, "model=e1000,bridge=vmbr0,firewall=1")
$vmid = 100
New-PveQemu -Memory "4096" -Bios ovmf -Cpu host -Cores 4 -Machine q35 -Node prox -Pool res -Ostype win10 -Scsihw virtio-scsi-pci -Vmid 100 -Name "PB99976-P05" -Storage fourt -Vga "type=qxl,memory=128" -NetN $net -Efidisk0 "fourt:1,efitype=4m,pre-enrolled-keys=1" -Agent "1" -SataN $sata -IdeN $ide -Boot "order=sata1;sata0;ide2" -UsbN $usb
Как видите, один из дисков, который я определил, импортирует существующий дисковый образ. Упомянул я это просто потому, что это часть скрипта, на которую ссывается сообщение об ошибке. Когда я пытаюсь запустить вышеуказанный скрипт, proxmox api возвращает следующую ошибку:
Код:
Only root can pass arbitrary filesystem paths. at /usr/share/perl5/PVE/Storage.pm line 561.
Путь, на который ссылается ошибка, — это путь, который я передал свойству "import-from" при создании одного из дисков. Я считаю эту ошибку странной, потому что, как видите сами, api ключ, который я использую в моем скрипте (который я, конечно, замаскировал), был создан для аутентификации пользователя root. В качестве теста я попытался запустить вышеуказанный скрипт снова, но на этот раз я аутентифицировался на proxmox сервере, используя фактические учетные данные учетной записи root, и скрипт сработал отлично. Итак, похоже, что, с точки зрения разрешений, необходимых для "передачи произвольного пути к файловой системе" в proxmox api, аутентификация на proxmox сервере с помощью api ключа, сгенерированного пользователем root, не имеет прав пользователя root.
