|
|
1.1 root 1: @example
2: @c man begin SYNOPSIS
3: usage: virtfs-proxy-helper options
4: @c man end
5: @end example
6:
7: @c man begin DESCRIPTION
8: @table @description
9: Pass-through security model in QEMU 9p server needs root privilege to do
10: few file operations (like chown, chmod to any mode/uid:gid). There are two
11: issues in pass-through security model
12:
13: 1) TOCTTOU vulnerability: Following symbolic links in the server could
14: provide access to files beyond 9p export path.
15:
16: 2) Running QEMU with root privilege could be a security issue.
17:
18: To overcome above issues, following approach is used: A new filesytem
19: type 'proxy' is introduced. Proxy FS uses chroot + socket combination
20: for securing the vulnerability known with following symbolic links.
21: Intention of adding a new filesystem type is to allow qemu to run
22: in non-root mode, but doing privileged operations using socket IO.
23:
24: Proxy helper(a stand alone binary part of qemu) is invoked with
25: root privileges. Proxy helper chroots into 9p export path and creates
26: a socket pair or a named socket based on the command line parameter.
27: QEMU and proxy helper communicate using this socket. QEMU proxy fs
28: driver sends filesystem request to proxy helper and receives the
29: response from it.
30:
31: Proxy helper is designed so that it can drop the root privilege with
32: retaining capbilities needed for doing filesystem operations only.
33:
34: @end table
35: @c man end
36:
37: @c man begin OPTIONS
38: The following options are supported:
39: @table @option
40: @item -h
41: @findex -h
42: Display help and exit
43: @item -p|--path path
44: Path to export for proxy filesystem driver
45: @item -f|--fd socket-id
46: Use given file descriptor as socket descriptor for communicating with
47: qemu proxy fs drier. Usually a helper like libvirt will create
48: socketpair and pass one of the fds as parameter to -f|--fd
49: @item -s|--socket socket-file
50: Creates named socket file for communicating with qemu proxy fs driver
51: @item -u|--uid uid -g|--gid gid
52: uid:gid combination to give access to named socket file
53: @item -n|--nodaemon
54: Run as a normal program. By default program will run in daemon mode
55: @end table
56: @c man end
57:
58: @setfilename virtfs-proxy-helper
59: @settitle QEMU 9p virtfs proxy filesystem helper
60:
61: @c man begin AUTHOR
62: M. Mohan Kumar
63: @c man end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.