| 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 |