libvirt/docs
Eric Blake 0f082e699e selinux: distinguish failure to label from request to avoid label
https://bugzilla.redhat.com/show_bug.cgi?id=924153

Commit 904e05a2 (v0.9.9) added a per-<disk> seclabel element with
an attribute relabel='no' in order to try and minimize the
impact of shutdown delays when an NFS server disappears.  The idea
was that if a disk is on NFS and can't be labeled in the first
place, there is no need to attempt the (no-op) relabel on domain
shutdown.  Unfortunately, the way this was implemented was by
modifying the domain XML so that the optimization would survive
libvirtd restart, but in a way that is indistinguishable from an
explicit user setting.  Furthermore, once the setting is turned
on, libvirt avoids attempts at labeling, even for operations like
snapshot or blockcopy where the chain is being extended or pivoted
onto non-NFS, where SELinux labeling is once again possible.  As
a result, it was impossible to do a blockcopy to pivot from an
NFS image file onto a local file.

The solution is to separate the semantics of a chain that must
not be labeled (which the user can set even on persistent domains)
vs. the optimization of not attempting a relabel on cleanup (a
live-only annotation), and using only the user's explicit notation
rather than the optimization as the decision on whether to skip
a label attempt in the first place.  When upgrading an older
libvirtd to a newer, an NFS volume will still attempt the relabel;
but as the avoidance of a relabel was only an optimization, this
shouldn't cause any problems.

In the ideal future, libvirt will eventually have XML describing
EVERY file in the backing chain, with each file having a separate
<seclabel> element.  At that point, libvirt will be able to track
more closely which files need a relabel attempt at shutdown.  But
until we reach that point, the single <seclabel> for the entire
<disk> chain is treated as a hint - when a chain has only one
file, then we know it is accurate; but if the chain has more than
one file, we have to attempt relabel in spite of the attribute,
in case part of the chain is local and SELinux mattered for that
portion of the chain.

* src/conf/domain_conf.h (_virSecurityDeviceLabelDef): Add new
member.
* src/conf/domain_conf.c (virSecurityDeviceLabelDefParseXML):
Parse it, for live images only.
(virSecurityDeviceLabelDefFormat): Output it.
(virDomainDiskDefParseXML, virDomainChrSourceDefParseXML)
(virDomainDiskSourceDefFormat, virDomainChrDefFormat)
(virDomainDiskDefFormat): Pass flags on through.
* src/security/security_selinux.c
(virSecuritySELinuxRestoreSecurityImageLabelInt): Honor labelskip
when possible.
(virSecuritySELinuxSetSecurityFileLabel): Set labelskip, not
norelabel, if labeling fails.
(virSecuritySELinuxSetFileconHelper): Fix indentation.
* docs/formatdomain.html.in (seclabel): Document new xml.
* docs/schemas/domaincommon.rng (devSeclabel): Allow it in RNG.
* tests/qemuxml2argvdata/qemuxml2argv-seclabel-*-labelskip.xml:
* tests/qemuxml2argvdata/qemuxml2argv-seclabel-*-labelskip.args:
* tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-*-labelskip.xml:
New test files.
* tests/qemuxml2argvtest.c (mymain): Run the new tests.
* tests/qemuxml2xmltest.c (mymain): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
2013-08-20 10:39:03 -06:00
..
api_extension xen_xs: name xendConfigVersion magic numbers 2012-02-01 16:28:17 -07:00
devhelp maint: consolidate several .gitignore files 2012-02-03 15:27:16 -07:00
html maint: consolidate several .gitignore files 2012-02-03 15:27:16 -07:00
internals Merge virCommandPreserveFD / virCommandTransferFD 2013-07-18 12:18:24 +01:00
schemas selinux: distinguish failure to label from request to avoid label 2013-08-20 10:39:03 -06:00
32favicon.png * docs/site.xsl docs/*.png docs/*.html: update the images from Diana, 2006-01-23 22:55:41 +00:00
404.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
acl.html.in Add documentation for access control system 2013-08-09 17:13:02 +01:00
aclpolkit.html.in Update polkit examples to use 'lookup' method 2013-08-16 16:57:09 +01:00
api_extension.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
api.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
apibuild.py Fix minor typos in messages and docs 2013-07-30 07:07:33 -06:00
apps.html.in docs: add another user 2013-05-17 09:18:14 -06:00
archdomain.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
architecture.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
architecture.gif * docs/architecture.* docs/*: added a section on the architecture 2005-12-21 16:59:34 +00:00
architecture.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
archnetwork.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
archnode.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
archstorage.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
auth.html.in Add documentation for access control system 2013-08-09 17:13:02 +01:00
bindings.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
bugs.html.in Document security reporting & handling process 2013-07-01 11:08:58 +08:00
cgroups.html.in Add docs about cgroups layout and usage 2013-05-13 12:04:42 +01:00
compiling.html.in build: honor autogen.sh --no-git 2013-07-09 16:15:29 -06:00
contact.html.in Document security reporting & handling process 2013-07-01 11:08:58 +08:00
csharp.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
deployment.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
devguide.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
docs.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
downloads.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drivers.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvesx.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvhyperv.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvlxc.html.in Document use of systemd socket activation 2013-08-12 17:17:03 +01:00
drvopenvz.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvparallels.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvphyp.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvqemu.html.in Fix docs generator regression in previous commit 2013-05-03 16:58:46 +01:00
drvremote.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvtest.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvuml.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvvbox.html.in Move VirtualBox driver into libvirtd 2013-05-16 16:28:53 +01:00
drvvmware.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvxen.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
errors.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
et.png * docs/Makefile.am docs/et.png docs/libvirt.css docs/page.xsl 2008-04-28 08:29:35 +00:00
firewall.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
footer_corner.png Split website out into one file per page. APply new layout and styling 2008-04-23 17:08:31 +00:00
footer_pattern.png Split website out into one file per page. APply new layout and styling 2008-04-23 17:08:31 +00:00
format.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatcaps.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatdomain.html.in selinux: distinguish failure to label from request to avoid label 2013-08-20 10:39:03 -06:00
formatnetwork.html.in network: permit upstream forwarding of unqualified DNS names 2013-08-14 09:46:22 -04:00
formatnode.html.in docs: fix usb node device sub-element names 2013-08-15 11:40:50 +02:00
formatnwfilter.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatsecret.html.in storage_pool: Rework chap XML to mimic ceph 2013-07-15 12:41:12 -04:00
formatsnapshot.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatstorage.html.in doc: storage pool permission copy-paste fix 2013-08-13 14:55:04 -06:00
formatstorageencryption.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
genaclperms.pl Add documentation for access control system 2013-08-09 17:13:02 +01:00
generic.css docs: Add some style and color to the HTML documentation 2013-01-18 15:36:38 +01:00
goals.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
hacking1.xsl maint: tweak use of <a> in HACKING 2013-07-09 11:49:20 -06:00
hacking2.xsl maint: tweak use of <a> in HACKING 2013-07-09 11:49:20 -06:00
hacking.html.in docs: mention VIR_TEST_RANGE 2013-08-12 20:44:41 -06:00
hooks.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
hvsupport.pl New internal migration APIs with extensible parameters 2013-06-25 01:13:16 +02:00
index.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
index.py Remove more trailing semicolons in Python files 2013-02-07 19:52:44 +01:00
internals.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
intro.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
java.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
library.xen remove all trailing blank lines 2009-07-16 15:06:42 +02:00
libvirt-daemon-arch.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
libvirt-daemon-arch.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-driver-arch.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
libvirt-driver-arch.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-header-bg.png Split website out into one file per page. APply new layout and styling 2008-04-23 17:08:31 +00:00
libvirt-header-logo.png Split website out into one file per page. APply new layout and styling 2008-04-23 17:08:31 +00:00
libvirt-net-logical.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
libvirt-net-logical.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-net-physical.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
libvirt-net-physical.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-object-model.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
libvirt-object-model.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-virConnect-example.fig internals: Update to include RPC and Lock links and add new data 2013-03-04 17:36:03 -05:00
libvirt-virConnect-example.png internals: Update to include RPC and Lock links and add new data 2013-03-04 17:36:03 -05:00
libvirt.css Add info about access control checks into API reference 2013-08-08 11:59:46 +01:00
libvirtLogo404.png Add a custom 404 error page for the website 2012-06-18 20:10:29 +01:00
libvirtLogo.png * //* : renamed the project libvirt , this affects all makefiles, 2006-02-09 17:45:11 +00:00
locking.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
logging.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
madeWith.png * //* : renamed the project libvirt , this affects all makefiles, 2006-02-09 17:45:11 +00:00
main.css Split website out into one file per page. APply new layout and styling 2008-04-23 17:08:31 +00:00
Makefile.am Add documentation for access control system 2013-08-09 17:13:02 +01:00
migration-managed-direct.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
migration-managed-direct.png Add documentation about migration. 2011-10-28 10:07:45 +01:00
migration-managed-p2p.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
migration-managed-p2p.png Add documentation about migration. 2011-10-28 10:07:45 +01:00
migration-native.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
migration-native.png Add documentation about migration. 2011-10-28 10:07:45 +01:00
migration-tunnel.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
migration-tunnel.png Add documentation about migration. 2011-10-28 10:07:45 +01:00
migration-unmanaged-direct.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
migration-unmanaged-direct.png Add documentation about migration. 2011-10-28 10:07:45 +01:00
migration.html.in Fix minor typos in messages and docs 2013-07-30 07:07:33 -06:00
newapi.xsl Add documentation for access control system 2013-08-09 17:13:02 +01:00
news.html.in Fix minor typos in messages and docs 2013-07-30 07:07:33 -06:00
news.xsl Convert NEWS to UTF-8 2009-07-29 09:04:21 +01:00
node.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
node.gif * doc/*: augment and try to complete the doc in its current state 2006-01-23 13:24:07 +00:00
page.xsl Add documentation for access control system 2013-08-09 17:13:02 +01:00
pending.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
php.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
python.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
relatedlinks.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
remote.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
search.php.code.in docs: autogenerate search.php 2012-08-10 10:58:38 +02:00
search.php.in docs: autogenerate search.php 2012-08-10 10:58:38 +02:00
securityprocess.html.in Document security reporting & handling process 2013-07-01 11:08:58 +08:00
site.xsl Fix docs generator regression in previous commit 2013-05-03 16:58:46 +01:00
sitemap.html.in Add documentation for access control system 2013-08-09 17:13:02 +01:00
storage.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
structures.fig Remove trailing whitespace from all xfig files 2011-10-28 10:11:16 +01:00
subsite.xsl virCommand: docs for usage of new command APIs 2010-12-02 16:00:47 -07:00
testapi.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
testsuites.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
testtck.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
todo.cfg-example Add automatic generation of a todo item page 2010-10-12 11:26:52 +01:00
todo.pl Fix namespace bugs in API docs, todo page & hv support page 2013-05-07 11:19:04 +01:00
uri.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
virshcmdref.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
windows.html.in Point users to Virt-Viewer MSI installers for Windows builds 2013-05-07 15:29:37 +01:00
wrapstring.xsl Generate HACKING from docs/hacking.html.in 2010-11-12 19:47:20 +01:00