Move the following tools documentation files to the new tools manual: docs/interop/qemu-img.rst docs/interop/qemu-nbd.rst docs/interop/virtfs-proxy-helper.rst docs/interop/qemu-trace-stap.rst docs/interop/virtiofsd.rst Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 20200217155415.30949-4-peter.maydell@linaro.org
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
QEMU 9p virtfs proxy filesystem helper
 | 
						|
======================================
 | 
						|
 | 
						|
Synopsis
 | 
						|
--------
 | 
						|
 | 
						|
**virtfs-proxy-helper** [*OPTIONS*]
 | 
						|
 | 
						|
Description
 | 
						|
-----------
 | 
						|
 | 
						|
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
 |