| QEMU 9p virtfs proxy filesystem helper |
| ====================================== |
| |
| Synopsis |
| -------- |
| |
| **virtfs-proxy-helper** [*OPTIONS*] |
| |
| Description |
| ----------- |
| |
| NOTE: The 9p 'proxy' backend is deprecated (since QEMU 8.1) and will be |
| removed, along with this daemon, in a future version of QEMU! |
| |
| Pass-through security model in QEMU 9p server needs root privilege to do |
| few file operations (like chown, chmod to any mode/uid:gid). There are two |
| issues in pass-through security model: |
| |
| - TOCTTOU vulnerability: Following symbolic links in the server could |
| provide access to files beyond 9p export path. |
| |
| - Running QEMU with root privilege could be a security issue. |
| |
| To overcome above issues, following approach is used: A new filesystem |
| type 'proxy' is introduced. Proxy FS uses chroot + socket combination |
| for securing the vulnerability known with following symbolic links. |
| Intention of adding a new filesystem type is to allow qemu to run |
| in non-root mode, but doing privileged operations using socket IO. |
| |
| Proxy helper (a stand alone binary part of qemu) is invoked with |
| root privileges. Proxy helper chroots into 9p export path and creates |
| a socket pair or a named socket based on the command line parameter. |
| QEMU and proxy helper communicate using this socket. QEMU proxy fs |
| driver sends filesystem request to proxy helper and receives the |
| response from it. |
| |
| The proxy helper is designed so that it can drop root privileges except |
| for the capabilities needed for doing filesystem operations. |
| |
| Options |
| ------- |
| |
| The following options are supported: |
| |
| .. program:: virtfs-proxy-helper |
| |
| .. option:: -h |
| |
| Display help and exit |
| |
| .. option:: -p, --path PATH |
| |
| Path to export for proxy filesystem driver |
| |
| .. option:: -f, --fd SOCKET_ID |
| |
| Use given file descriptor as socket descriptor for communicating with |
| qemu proxy fs drier. Usually a helper like libvirt will create |
| socketpair and pass one of the fds as parameter to this option. |
| |
| .. option:: -s, --socket SOCKET_FILE |
| |
| Creates named socket file for communicating with qemu proxy fs driver |
| |
| .. option:: -u, --uid UID |
| |
| uid to give access to named socket file; used in combination with -g. |
| |
| .. option:: -g, --gid GID |
| |
| gid to give access to named socket file; used in combination with -u. |
| |
| .. option:: -n, --nodaemon |
| |
| Run as a normal program. By default program will run in daemon mode |