[pve-devel] Interest in a file manager interface within pve-manager?
Dominik Csapak
d.csapak at proxmox.com
Tue Aug 13 10:43:36 CEST 2024
sorry for the noise, it seems i forgot to put you in CC, so now again with that...
On 8/13/24 10:35, Dominik Csapak wrote:
> On 7/12/24 00:27, Blythe, Nathan F. - US via pve-devel wrote:
>>
>> Hello,
>>
>
> Hi, sorry for the late answer.
>
> First thanks for a well written proposal/question. This is what we'd like to see if third-parties
> are interested in making features/changes/etc.
>
> I try to answer the question/proposal to the best of my knowledge, but maybe some of my colleagues
> have additional things to say or want to correct me
> (this could take a bit though, due to summer holiday season)
>
>> We have a need for a non-network based (i.e. hypercall / out-of-band) file browser for containers
>> and VMs within the pve-manager web UI. I'd like to be able to select a VM or container, click
>> "More", and choose "File manager" and then browse the VM or container's file systems and upload or
>> download files from my local system, through the web-browser.
>>
>> For VMs (qemu), the qemu-guest-agent provides the ability to read/write guest files, and the pve
>> API exposes it (with strict file size limits) as nodes->{node}->qemu->{vmid}->agent->file-*.
>> Presumably, a web UI file manager would use that API endpoint, plus maybe an enhancement for
>> directory listing and chunked upload/download (to support arbitrary size files).
>>
>> For containers (LXC), the pct application can read/write files by (I think) mounting the container
>> root file system on the host and touching it directly. But there's no corresponding API endpoint.
>> If there were, it could be used by a future web UI file manager.
>>
>> So to implement this feature, I think there are 5 steps:
>>
>> 1. Enhance the qemu-guest-agent and qm to support reading directory structure and creating
>> directories.
>> 2. Enhance the pve API to expose these new features like file-read and file-write.
>> 3. Enhance the pve API to support chunked file read and write, for large files. Maybe also
>> requiring an enhancement to the qemu-guest-agent?
>> 4. Enhance the pve API to support chunked file read/write, whole file read/write, and
>> directory structure/creating directories (through direct filesystem interaction on the host).
>> 5. Write a JS front-end file manager, invokable from the Other menu, which uses these new/
>> enhanced API endpoints to implement a general purpose out-of-band file manager.
>>
>> Is there interest from the proxmox developers for something like this? If we started working on
>> some of these items, would there be interest in accepting patches? Does my general approach look
>> sound?
>
> After a bit of internal discussion, the general tone is that we probably don't want to expose the
> guest content/state by default this much now, but in the longer term it could be OK, but we see the
> following issues:
>
> * For now QEMU allows those guest calls by default, and there is at the moment not a really good
> way for configuring what's allowed and what not.
> * Our privileges and ACLs are not really designed for this currently.
> * Handling permissions (and other filesystem/guest "quirks") will be very hard
> (e.g. windows permissions are very different from linux/unix ones)
>
> As breaking the host/guest barrier can have bad implications on security/data integrity/etc.
> those problems would have to be solved before one could/should start with such a feature.
>
> There is currently some work done on the QEMU side for limiting/configuring QGA calls:
> https://lore.kernel.org/qemu-devel/20240604153242.251334-1-berrange@redhat.com/
>
> When that's integrated, one could think about how our ACLs, privileges could be extended to allow
> such things.
>
> Only after those are solved, implementing this feature make sense.
>
> What could be done in the meantime probably is to work with upstream QEMU to add
> a directory listing to the qga and maybe some proper permission handling?
>
> This is relatively independent from our side, since we don't actually ship
> the guest agent ourselves, so this has to be solved upstream anyway.
>
> So all in all, such a feature could work, but only in the longer term, this is nothing
> for the short/midterm.
>
> Hope this answers your questions. If not, just write again :)
>
>>
>> (We also investigated using SPICE's folder-sharing capabilities and the spice-proxy provided by
>> the host, but that doesn't work with the Windows virt-viewer client, only the Linux client. It
>> looks like there was some interest in the past in enhancing xterm.js to support xmodem file
>> transfer, but it didn't go far.)
>>
>> Regards,
>> Nathan Blythe
>> CACI
>
>
> Best regards
> Dominik
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
>
More information about the pve-devel
mailing list