Skip to content

Commit

Permalink
Merge pull request #3151 from mvo5/selinux-labels-on-non-selinux-hosts
Browse files Browse the repository at this point in the history
libostree: write selinux xattr when on non-selinux systems
  • Loading branch information
cgwalters authored Feb 8, 2024
2 parents a61724b + 5cfc5c7 commit 751ec90
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 4 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/bootc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ jobs:
- name: bootc install
run: |
set -xeuo pipefail
sudo podman run --rm -ti --privileged -v /:/target --pid=host --security-opt label=disable \
sudo podman run --env BOOTC_SKIP_SELINUX_HOST_CHECK=1 --rm -ti --privileged -v /:/target --pid=host --security-opt label=disable \
-v /var/lib/containers:/var/lib/containers \
localhost/test:latest bootc install to-filesystem --skip-fetch-check \
--disable-selinux --replace=alongside /target
--replace=alongside /target
# Verify labeling for /etc
sudo ls -dZ /ostree/deploy/default/deploy/*.0/etc |grep :etc_t:
4 changes: 2 additions & 2 deletions src/libostree/ostree-repo-checkout.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ create_file_copy_from_input_at (OstreeRepo *repo, OstreeRepoCheckoutAtOptions *o
g_autoptr (GVariant) modified_xattrs = NULL;

/* If we're doing SELinux labeling, prepare it */
if (sepolicy_enabled)
if (sepolicy_enabled && ostree_sepolicy_host_enabled (options->sepolicy))
{
/* If doing sepolicy path-based labeling, we don't want to set the
* security.selinux attr via the generic xattr paths in either the symlink
Expand Down Expand Up @@ -1045,7 +1045,7 @@ checkout_tree_at_recurse (OstreeRepo *self, OstreeRepoCheckoutAtOptions *options
};

/* If we're doing SELinux labeling, prepare it */
if (sepolicy_enabled)
if (sepolicy_enabled && ostree_sepolicy_host_enabled (options->sepolicy))
{
/* We'll set the xattr via setfscreatecon(), so don't do it via generic xattrs below. */
modified_xattrs = _ostree_filter_selinux_xattr (xattrs);
Expand Down
16 changes: 16 additions & 0 deletions src/libostree/ostree-sepolicy.c
Original file line number Diff line number Diff line change
Expand Up @@ -753,3 +753,19 @@ _ostree_filter_selinux_xattr (GVariant *xattrs)
return NULL;
return g_variant_ref_sink (g_variant_builder_end (&builder));
}

/**
* ostree_sepolicy_host_enabled:
* @self: Policy
*
* Return if the host has selinux enabled
*/
gboolean
ostree_sepolicy_host_enabled (OstreeSePolicy *self)
{
#ifdef HAVE_SELINUX
return cached_is_selinux_enabled ();
#else
return FALSE;
#endif
}
3 changes: 3 additions & 0 deletions src/libostree/ostree-sepolicy.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,7 @@ void ostree_sepolicy_fscreatecon_cleanup (void **unused);
#define ostree_cleanup_sepolicy_fscreatecon \
__attribute__ ((cleanup (ostree_sepolicy_fscreatecon_cleanup)))

_OSTREE_PUBLIC
gboolean ostree_sepolicy_host_enabled (OstreeSePolicy *self);

G_END_DECLS

0 comments on commit 751ec90

Please sign in to comment.