Currently the qemu-nbd program will auto-detect the format of any disk it is given. This behaviour is known to be insecure. For example, if qemu-nbd initially exposes a 'raw' file to an unprivileged app, and that app runs 'qemu-img create -f qcow2 -o backing_file=/etc/shadow /dev/nbd0' then the next time the app is started, the qemu-nbd will now detect it as a 'qcow2' file and expose /etc/shadow to the unprivileged app. The only way to avoid this is to explicitly tell qemu-nbd what disk format to use on the command line, completely disabling auto-detection. This patch adds a '-f' / '--format' arg for this purpose, mirroring what is already available via qemu-img and qemu commands. qemu-nbd --format raw -p 9000 evil.img will now always use raw, regardless of what format 'evil.img' looks like it contains Signed-off-by: Daniel P. Berrange <berrange@redhat.com> [Use errx, not err. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@example
 | 
						|
@c man begin SYNOPSIS
 | 
						|
usage: qemu-nbd [OPTION]...  @var{filename}
 | 
						|
@c man end
 | 
						|
@end example
 | 
						|
 | 
						|
@c man begin DESCRIPTION
 | 
						|
 | 
						|
Export QEMU disk image using NBD protocol.
 | 
						|
 | 
						|
@c man end
 | 
						|
 | 
						|
@c man begin OPTIONS
 | 
						|
@table @option
 | 
						|
@item @var{filename}
 | 
						|
 is a disk image filename
 | 
						|
@item -p, --port=@var{port}
 | 
						|
  port to listen on (default @samp{1024})
 | 
						|
@item -o, --offset=@var{offset}
 | 
						|
  offset into the image
 | 
						|
@item -b, --bind=@var{iface}
 | 
						|
  interface to bind to (default @samp{0.0.0.0})
 | 
						|
@item -k, --socket=@var{path}
 | 
						|
  Use a unix socket with path @var{path}
 | 
						|
@item -r, --read-only
 | 
						|
  export read-only
 | 
						|
@item -P, --partition=@var{num}
 | 
						|
  only expose partition @var{num}
 | 
						|
@item -s, --snapshot
 | 
						|
  use snapshot file
 | 
						|
@item -n, --nocache
 | 
						|
@itemx --cache=@var{cache}
 | 
						|
  set cache mode to be used with the file.  See the documentation of
 | 
						|
  the emulator's @code{-drive cache=...} option for allowed values.
 | 
						|
@item --aio=@var{aio}
 | 
						|
  choose asynchronous I/O mode between @samp{threads} (the default)
 | 
						|
  and @samp{native} (Linux only).
 | 
						|
@item --discard=@var{discard}
 | 
						|
  toggles whether @dfn{discard} (also known as @dfn{trim} or @dfn{unmap})
 | 
						|
  requests are ignored or passed to the filesystem.  The default is no
 | 
						|
  (@samp{--discard=ignore}).
 | 
						|
@item -c, --connect=@var{dev}
 | 
						|
  connect @var{filename} to NBD device @var{dev}
 | 
						|
@item -d, --disconnect
 | 
						|
  disconnect the specified device
 | 
						|
@item -e, --shared=@var{num}
 | 
						|
  device can be shared by @var{num} clients (default @samp{1})
 | 
						|
@item -f, --format=@var{fmt}
 | 
						|
  force block driver for format @var{fmt} instead of auto-detecting
 | 
						|
@item -t, --persistent
 | 
						|
  don't exit on the last connection
 | 
						|
@item -v, --verbose
 | 
						|
  display extra debugging information
 | 
						|
@item -h, --help
 | 
						|
  display this help and exit
 | 
						|
@item -V, --version
 | 
						|
  output version information and exit
 | 
						|
@end table
 | 
						|
 | 
						|
@c man end
 | 
						|
 | 
						|
@ignore
 | 
						|
 | 
						|
@setfilename qemu-nbd
 | 
						|
@settitle QEMU Disk Network Block Device Server
 | 
						|
 | 
						|
@c man begin AUTHOR
 | 
						|
Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws>.
 | 
						|
This is free software; see the source for copying conditions.  There is NO
 | 
						|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
@c man end
 | 
						|
 | 
						|
@c man begin SEEALSO
 | 
						|
qemu-img(1)
 | 
						|
@c man end
 | 
						|
 | 
						|
@end ignore
 |