This is the upstream repository for the Security Enhanced Linux (SELinux) userland libraries and tools. The software provided by this project complements the SELinux features integrated into the Linux kernel and is used by Linux distributions. All bugs an
Go to file
Stephen Smalley 8702a865e0 libsemanage: Save linked policy, skip re-link when possible
In commit b61922f727 ("libsemanage: revert
"Skip policy module re-link when only setting booleans"), we reverted
an optimization for setting booleans since it produced incorrect behavior.
This incorrect behavior was due to operating on the policy with local
changes already merged. However, reverting this change leaves us with
undesirable overhead for setsebool -P.  We also have long wanted
to support the same optimization for making other changes that do
not truly require module re-compilation/re-linking.

If we save the linked policy prior to merging local changes, we
can skip re-linking the policy modules in most cases, thereby
significantly improvement the performance and memory overhead of
semanage and setsebool -P commands.  Save the linked policy in the
policy sandbox and use it when we are not making a change that requires
recompilation of the CIL modules.  With this change, a re-link
is not performed when setting booleans or when adding, deleting, or
modifying port, node, interface, user, login (seusers) or fcontext
mappings.  We save linked versions of the kernel policy, seusers,
and users_extra produced from the CIL modules before any local
changes are merged.  This has an associated storage cost, primarily
storing an extra copy of the kernel policy file.

Before:
$ time setsebool -P zebra_write_config=1
real	0m8.714s
user	0m7.937s
sys	0m0.748s

After:
$ time setsebool -P zebra_write_config=1
real	0m1.070s
user	0m0.343s
sys	0m0.703s

Resolves: https://github.com/SELinuxProject/selinux/issues/50
Reported-by: Carlos Rodrigues <cefrodrigues@gmail.com>
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2017-04-12 14:56:29 -04:00
checkpolicy checkpolicy: Add options to convert binary policy to CIL or a policy.conf 2017-04-05 12:23:30 -04:00
dbus Add stub make test targets to new subdirs 2016-11-16 11:20:05 -05:00
gui Add stub make test targets to new subdirs 2016-11-16 11:20:05 -05:00
libselinux libselinux: add O_CLOEXEC 2017-04-12 14:51:41 -04:00
libsemanage libsemanage: Save linked policy, skip re-link when possible 2017-04-12 14:56:29 -04:00
libsepol libsepol: cil: check cil_fill_list return value 2017-04-12 14:40:16 -04:00
mcstrans mcstrans: fix typo in mcstransd.8 man page 2017-03-28 13:38:37 -04:00
policycoreutils policycoreutils: newrole: always initialize pw fields 2017-04-12 14:48:36 -04:00
python python/semanage: fix export of fcontext socket entries 2017-03-15 13:10:18 -04:00
restorecond restorecond: add noreturn attribute to exitApp() 2017-03-07 14:00:16 -05:00
sandbox sandbox: make test not fail on systems without SELinux 2016-11-17 16:44:57 -05:00
scripts Fix release script 2016-11-16 11:19:51 -05:00
secilc secilc: Add options to control the expansion of attributes 2017-04-12 14:33:55 -04:00
semodule-utils semodule-utils: add noreturn attribute to usage() 2017-03-07 14:00:39 -05: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 Build mcstrans. 2016-11-16 11:19:50 -05: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).