Go to file
Stephen Smalley 58962eb3d8 libsepol,checkpolicy: add binary module support for xperms
Presently we support xperms rules in source policy and in CIL modules.
The binary policy module format however was never extended for xperms.
This limitation inhibits use of xperms in refpolicy-based policy modules
(including the selinux-testsuite policy).  Update libsepol to support
linking, reading, and writing a new binary policy module version that
supports xperms rules.  Update dismod to display xperms rules in binary
policy modules.

Also, to support use of a non-base binary policy module with a newer
version on a system using a base policy module with an older version,
automatically upgrade the version during module linking.  This facilitates
usage of newer features in non-base modules without requiring rebuilding
the base module.

Tests:
1. Add an allowxperms rule to the selinux-testsuite policy and
confirm that it is properly written to the binary policy module
(displayed by dismod), converted to CIL (the latter was already supported),
and included in the kernel policy (via dispol and kernel test).

2. Use semodule_link and semodule_expand to manually link and expand
all of the .pp files via libsepol, and confirm that the allowxperms rule
is correctly propagated to the kernel policy.  This test is required to
exercise the legacy link/expand code path for binary modules that predated
CIL.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2017-05-17 09:35:52 -04:00
checkpolicy libsepol,checkpolicy: add binary module support for xperms 2017-05-17 09:35:52 -04:00
dbus dbus: Use text streams in selinux_server.py 2017-05-05 11:52:19 -04:00
gui sepolicy: Adapt to new the semodule list output 2017-05-05 11:52:19 -04:00
libselinux libselinux: close the subs file if fstat failed 2017-05-15 16:36:54 -04:00
libsemanage Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
libsepol libsepol,checkpolicy: add binary module support for xperms 2017-05-17 09:35:52 -04:00
mcstrans Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
policycoreutils policycoreutils: fixfiles: use a consistent order for options to restorecon 2017-05-09 14:47:57 -04:00
python sepolicy/gui: Update text strings to use better gettext templates 2017-05-05 11:52:19 -04:00
restorecond restorecond: get pcre cflags/libs from pkg-config 2017-04-25 08:27:44 -04:00
sandbox Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
scripts Fix release script 2016-11-16 11:19:51 -05:00
secilc Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
semodule-utils Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
.gitignore restorecond: Add gitignore 2016-11-16 11:20:05 -05:00
.travis.yml libsemanage/tests: include libsepol headers from $DESTDIR 2017-03-01 10:42:34 -05:00
CleanSpec.mk Add empty top level Android.mk / CleanSpec.mk files 2015-04-16 07:54:09 -04:00
Makefile Add includes for DESTDIR only in root Makefile 2017-04-25 08:31:10 -04:00
README libsepol compilation fixes for macOS. 2017-01-20 13:19:57 -05:00

Please submit all bug reports and patches to selinux@tycho.nsa.gov.
Subscribe via selinux-join@tycho.nsa.gov.

Build dependencies on Fedora:
yum install audit-libs-devel bison bzip2-devel dbus-devel dbus-glib-devel flex flex-devel flex-static glib2-devel libcap-devel libcap-ng-devel pam-devel pcre-devel python-devel setools-devel swig xmlto redhat-rpm-config

To build and install everything under a private directory, run:
make DESTDIR=~/obj install install-pywrap

To install as the default system libraries and binaries
(overwriting any previously installed ones - dangerous!),
on x86_64, run:
make LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install install-pywrap relabel
or on x86 (32-bit), run:
make install install-pywrap relabel

This may render your system unusable if the upstream SELinux userspace
lacks library functions or other dependencies relied upon by your
distribution.  If it breaks, you get to keep both pieces.

To install libsepol on macOS (mainly for policy analysis):
cd libsepol; make DESTDIR=/usr/local PREFIX=/usr/local install

This requires GNU coreutils (brew install coreutils).