Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package policycoreutils for openSUSE:Factory checked in at 2025-07-20 15:27:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/policycoreutils (Old) and /work/SRC/openSUSE:Factory/.policycoreutils.new.8875 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "policycoreutils" Sun Jul 20 15:27:55 2025 rev:83 rq:1294371 version:3.9 Changes: -------- --- /work/SRC/openSUSE:Factory/policycoreutils/policycoreutils.changes 2025-05-30 17:24:59.062410974 +0200 +++ /work/SRC/openSUSE:Factory/.policycoreutils.new.8875/policycoreutils.changes 2025-07-20 15:28:02.065493220 +0200 @@ -1,0 +2,15 @@ +Thu Jul 17 15:53:34 UTC 2025 - Johannes Segitz <jseg...@suse.com> + +- Update to version 3.9 + * setfiles: Add -U option to modify user and role portions + * semodule: Add [-g PATH |--config=PATH] for an alternate path for the semanage config + * Updated usr_etc.patch + +------------------------------------------------------------------- +Wed Jun 11 09:04:57 UTC 2025 - Stefan Schubert <sch...@suse.com> + +- Moved /etc/sestatus.conf to /usr/etc. +- This patch is upstream: + https://github.com/SELinuxProject/selinux/pull/415 + +------------------------------------------------------------------- Old: ---- policycoreutils-3.8.1.tar.gz policycoreutils-3.8.1.tar.gz.asc selinux-dbus-3.8.1.tar.gz selinux-dbus-3.8.1.tar.gz.asc selinux-gui-3.8.1.tar.gz selinux-gui-3.8.1.tar.gz.asc selinux-python-3.8.1.tar.gz selinux-python-3.8.1.tar.gz.asc semodule-utils-3.8.1.tar.gz semodule-utils-3.8.1.tar.gz.asc New: ---- policycoreutils-3.9.tar.gz policycoreutils-3.9.tar.gz.asc selinux-dbus-3.9.tar.gz selinux-dbus-3.9.tar.gz.asc selinux-gui-3.9.tar.gz selinux-gui-3.9.tar.gz.asc selinux-python-3.9.tar.gz selinux-python-3.9.tar.gz.asc semodule-utils-3.9.tar.gz semodule-utils-3.9.tar.gz.asc usr_etc.patch ----------(New B)---------- New: * semodule: Add [-g PATH |--config=PATH] for an alternate path for the semanage config * Updated usr_etc.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ policycoreutils.spec ++++++ --- /var/tmp/diff_new_pack.P9yyGV/_old 2025-07-20 15:28:04.165580123 +0200 +++ /var/tmp/diff_new_pack.P9yyGV/_new 2025-07-20 15:28:04.169580289 +0200 @@ -30,12 +30,12 @@ %endif %define libaudit_ver 2.2 -%define libsepol_ver 3.8.1 -%define libsemanage_ver 3.8.1 -%define libselinux_ver 3.8.1 +%define libsepol_ver 3.9 +%define libsemanage_ver 3.9 +%define libselinux_ver 3.9 %define setools_ver 4.1.1 Name: policycoreutils -Version: 3.8.1 +Version: 3.9 Release: 0 Summary: SELinux policy core utilities License: GPL-2.0-or-later @@ -57,6 +57,7 @@ Patch0: make_targets.patch Patch2: get_os_version.patch Patch3: run_init.pamd.patch +Patch4: usr_etc.patch BuildRequires: audit-devel >= %{libaudit_ver} BuildRequires: bison BuildRequires: dbus-1-glib-devel @@ -208,12 +209,17 @@ %patch -P0 -p1 %patch -P2 -p1 %patch -P3 -p1 +%patch -P4 -p2 mv ${setools_python_pwd}/audit2allow ${setools_python_pwd}/chcat ${setools_python_pwd}/semanage ${setools_python_pwd}/sepolgen ${setools_python_pwd}/sepolicy . mv ${semodule_utils_pwd}/semodule_expand ${semodule_utils_pwd}/semodule_link ${semodule_utils_pwd}/semodule_package . %build export PYTHON="%{python_binary_for_executables}" LIBDIR="%{_libdir}" CFLAGS="%{optflags} -fPIE" LDFLAGS="-pie -Wl,-z,relro" +%if 0%{?suse_version} > 1500 +make %{?_smp_mflags} LIBEXECDIR="%{_libexecdir}" VENDORDIR=%{_distconfdir} +%else make %{?_smp_mflags} LIBEXECDIR="%{_libexecdir}" +%endif (cd selinux-python-%{version}/po && make) %install @@ -228,6 +234,7 @@ mkdir -p %{buildroot}%{_mandir}/man8 %if 0%{?suse_version} > 1500 mkdir -p %{buildroot}%{_pam_vendordir} +mkdir -p %{buildroot}%{_distconfdir} %else mkdir -p %{buildroot}%{_sysconfdir}/pam.d %endif @@ -239,6 +246,7 @@ cp -f %{SOURCE13} %{buildroot}%{_pam_vendordir}/newrole rm %{buildroot}%{_sysconfdir}/pam.d/newrole mv %{buildroot}%{_sysconfdir}/pam.d/run_init %{buildroot}%{_pam_vendordir}/run_init +mv %{buildroot}%{_sysconfdir}/sestatus.conf %{buildroot}%{_distconfdir}/sestatus.conf %else cp -f %{SOURCE13} %{buildroot}%{_sysconfdir}/pam.d/newrole %endif @@ -292,7 +300,7 @@ %if 0%{?suse_version} > 1500 %pre # Prepare for migration to /usr/etc; save any old .rpmsave -for i in pam.d/run_init ; do +for i in pam.d/run_init sestatus.conf ; do test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i}.rpmsave.old ||: done @@ -304,7 +312,7 @@ %posttrans # Migration to /usr/etc, restore just created .rpmsave -for i in pam.d/run_init ; do +for i in pam.d/run_init sestatus.conf; do test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||: done @@ -364,7 +372,11 @@ %else %config(noreplace) %{_sysconfdir}/pam.d/run_init %endif +%if 0%{?suse_version} > 1500 +%{_distconfdir}/sestatus.conf +%else %config(noreplace) %{_sysconfdir}/sestatus.conf +%endif %{_mandir}/man8/fixfiles.8%{?ext_man} %{_mandir}/man8/genhomedircon.8%{?ext_man} %{_mandir}/man8/load_policy.8%{?ext_man} ++++++ get_os_version.patch ++++++ --- /var/tmp/diff_new_pack.P9yyGV/_old 2025-07-20 15:28:04.217582275 +0200 +++ /var/tmp/diff_new_pack.P9yyGV/_new 2025-07-20 15:28:04.221582441 +0200 @@ -1,7 +1,7 @@ -Index: policycoreutils-3.8.1/selinux-python-3.8.1/sepolicy/sepolicy/__init__.py +Index: policycoreutils-3.9/selinux-python-3.9/sepolicy/sepolicy/__init__.py =================================================================== ---- policycoreutils-3.8.1.orig/selinux-python-3.8.1/sepolicy/sepolicy/__init__.py -+++ policycoreutils-3.8.1/selinux-python-3.8.1/sepolicy/sepolicy/__init__.py +--- policycoreutils-3.9.orig/selinux-python-3.9/sepolicy/sepolicy/__init__.py ++++ policycoreutils-3.9/selinux-python-3.9/sepolicy/sepolicy/__init__.py @@ -1246,7 +1246,8 @@ def get_os_version(): import distro system_release = distro.name(pretty=True) ++++++ make_targets.patch ++++++ --- /var/tmp/diff_new_pack.P9yyGV/_old 2025-07-20 15:28:04.237583103 +0200 +++ /var/tmp/diff_new_pack.P9yyGV/_new 2025-07-20 15:28:04.237583103 +0200 @@ -6,6 +6,6 @@ -SUBDIRS = setfiles load_policy newrole run_init secon sestatus semodule setsebool scripts po man hll unsetfiles +SUBDIRS = setfiles load_policy newrole run_init secon sestatus semodule setsebool scripts po man hll unsetfiles sepolicy audit2allow semanage sepolgen chcat semodule_expand semodule_link semodule_package - all install relabel clean indent: - @for subdir in $(SUBDIRS); do \ + PKG_CONFIG ?= pkg-config + ++++++ policycoreutils-3.8.1.tar.gz -> policycoreutils-3.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/Makefile new/policycoreutils-3.9/Makefile --- old/policycoreutils-3.8.1/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -1,5 +1,11 @@ SUBDIRS = setfiles load_policy newrole run_init secon sestatus semodule setsebool scripts po man hll unsetfiles +PKG_CONFIG ?= pkg-config + +LIBSELINUX_LDLIBS := $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH):../libselinux/src" $(PKG_CONFIG) --libs libselinux) +LIBSEMANAGE_LDLIBS := $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH):../libsemanage/src" $(PKG_CONFIG) --libs libsemanage) +export LIBSELINUX_LDLIBS LIBSEMANAGE_LDLIBS + all install relabel clean indent: @for subdir in $(SUBDIRS); do \ (cd $$subdir && $(MAKE) $@) || exit 1; \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/VERSION new/policycoreutils-3.9/VERSION --- old/policycoreutils-3.8.1/VERSION 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/VERSION 2025-07-16 12:55:13.000000000 +0200 @@ -1 +1 @@ -3.8.1 +3.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/load_policy/Makefile new/policycoreutils-3.9/load_policy/Makefile --- old/policycoreutils-3.8.1/load_policy/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/load_policy/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -6,8 +6,8 @@ LOCALEDIR ?= $(DESTDIR)$(PREFIX)/share/locale CFLAGS ?= -Werror -Wall -W -override CFLAGS += $(LDFLAGS) -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" -override LDLIBS += -lsepol -lselinux +override CFLAGS += $(LDFLAGS) -I../../libselinux/include -L../../libselinux/src -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +override LDLIBS += $(LIBSELINUX_LDLIBS) -lsepol TARGETS=$(patsubst %.c,%,$(sort $(wildcard *.c))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/newrole/Makefile new/policycoreutils-3.9/newrole/Makefile --- old/policycoreutils-3.8.1/newrole/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/newrole/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -24,8 +24,9 @@ CFLAGS ?= -Werror -Wall -W EXTRA_OBJS = -override CFLAGS += -DVERSION=\"$(VERSION)\" -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" -override LDLIBS += -lselinux +override CFLAGS += -I../../libselinux/include -DVERSION=\"$(VERSION)\" -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +override LDFLAGS+= -L../../libselinux/src +override LDLIBS += $(LIBSELINUX_LDLIBS) ifeq ($(PAMH), y) override CFLAGS += -DUSE_PAM EXTRA_OBJS += hashtab.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/run_init/Makefile new/policycoreutils-3.9/run_init/Makefile --- old/policycoreutils-3.8.1/run_init/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/run_init/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -10,8 +10,9 @@ AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) CFLAGS ?= -Werror -Wall -W -override CFLAGS += -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" -override LDLIBS += -lselinux +override CFLAGS += -I../../libselinux/include -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +override LDFLAGS+= -L../../libselinux/src +override LDLIBS += $(LIBSELINUX_LDLIBS) ifeq ($(PAMH), y) override CFLAGS += -DUSE_PAM override LDLIBS += -lpam -lpam_misc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/run_init/run_init.c new/policycoreutils-3.9/run_init/run_init.c --- old/policycoreutils-3.8.1/run_init/run_init.c 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/run_init/run_init.c 2025-07-16 12:55:13.000000000 +0200 @@ -37,6 +37,8 @@ * *************************************************************************/ +#define _GNU_SOURCE + #include <stdio.h> #include <stdlib.h> /* for malloc(), realloc(), free() */ #include <pwd.h> /* for getpwuid() */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/secon/Makefile new/policycoreutils-3.9/secon/Makefile --- old/policycoreutils-3.8.1/secon/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/secon/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -7,8 +7,9 @@ WARNS=-Werror -W -Wall -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-format-zero-length -Wformat-nonliteral -Wformat-security -Wfloat-equal VERSION = $(shell cat ../VERSION) CFLAGS ?= $(WARNS) -O1 -override CFLAGS += -DVERSION=\"$(VERSION)\" -override LDLIBS += -lselinux +override CFLAGS += -I../../libselinux/include -DVERSION=\"$(VERSION)\" +override LDFLAGS+= -L../../libselinux/src +override LDLIBS += $(LIBSELINUX_LDLIBS) all: secon diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/semodule/Makefile new/policycoreutils-3.9/semodule/Makefile --- old/policycoreutils-3.8.1/semodule/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/semodule/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -5,7 +5,9 @@ MANDIR = $(PREFIX)/share/man CFLAGS ?= -Werror -Wall -W -override LDLIBS += -lsepol -lselinux -lsemanage +override CFLAGS += -I../../libselinux/include -I../../libsemanage/include +override LDFLAGS+= -L../../libselinux/src -L../../libsemanage/src +override LDLIBS += $(LIBSEMANAGE_LDLIBS) -lsepol $(LIBSELINUX_LDLIBS) SEMODULE_OBJS = semodule.o all: semodule genhomedircon diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/semodule/semodule.8 new/policycoreutils-3.9/semodule/semodule.8 --- old/policycoreutils-3.8.1/semodule/semodule.8 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/semodule/semodule.8 2025-07-16 12:55:13.000000000 +0200 @@ -86,6 +86,9 @@ .B \-C,\-\-ignore-module-cache Recompile CIL modules built from HLL files .TP +.B \-g,\-\-config=PATH +use an alternate path for the semanage config +.TP .B \-p,\-\-path Use an alternate path for the policy root .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/semodule/semodule.c new/policycoreutils-3.9/semodule/semodule.c --- old/policycoreutils-3.8.1/semodule/semodule.c 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/semodule/semodule.c 2025-07-16 12:55:13.000000000 +0200 @@ -145,6 +145,7 @@ printf(" -v,--verbose be verbose\n"); printf(" -P,--preserve_tunables Preserve tunables in policy\n"); printf(" -C,--ignore-module-cache Rebuild CIL modules compiled from HLL files\n"); + printf(" -g,--config=PATH use an alternate path for the semanage config\n"); printf(" -p,--path use an alternate path for the policy root\n"); printf(" -S,--store-path use an alternate path for the policy store root\n"); printf(" -c, --cil extract module as cil. This only affects module extraction.\n"); @@ -210,6 +211,7 @@ {"enable", required_argument, NULL, 'e'}, {"disable", required_argument, NULL, 'd'}, {"path", required_argument, NULL, 'p'}, + {"config", required_argument, NULL, 'g'}, {"store-path", required_argument, NULL, 'S'}, {"checksum", 0, NULL, 'm'}, {NULL, 0, NULL, 0} @@ -223,7 +225,7 @@ check_ext_changes = 0; priority = 400; while ((i = - getopt_long(argc, argv, "s:b:hi:l::vr:u:RnNBDCPX:e:d:p:S:E:cHm", + getopt_long(argc, argv, "s:b:hi:l::vr:u:RnNBDCPX:e:d:p:g:S:E:cHm", opts, &longind)) != -1) { switch (i) { case '\0': @@ -304,6 +306,14 @@ case 'C': ignore_module_cache = 1; break; + case 'g': + sh = semanage_handle_create_with_path(optarg); + if (!sh) { + fprintf(stderr, "%s: Could not create semanage handle\n", + argv[0]); + exit(1); + } + break; case 'X': set_mode(PRIORITY_M, optarg); break; @@ -421,11 +431,13 @@ if (build || check_ext_changes) commit = 1; - sh = semanage_handle_create(); if (!sh) { - fprintf(stderr, "%s: Could not create semanage handle\n", - argv[0]); - goto cleanup_nohandle; + sh = semanage_handle_create(); + if (!sh) { + fprintf(stderr, "%s: Could not create semanage handle\n", + argv[0]); + goto cleanup_nohandle; + } } if (store) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/sestatus/Makefile new/policycoreutils-3.9/sestatus/Makefile --- old/policycoreutils-3.8.1/sestatus/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/sestatus/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -7,8 +7,9 @@ ETCDIR ?= /etc CFLAGS ?= -Werror -Wall -W -override CFLAGS += -D_FILE_OFFSET_BITS=64 -override LDLIBS += -lselinux +override CFLAGS += -I../../libselinux/include -D_FILE_OFFSET_BITS=64 +override LDFLAGS+= -L../../libselinux/src +override LDLIBS += $(LIBSELINUX_LDLIBS) all: sestatus diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setfiles/Makefile new/policycoreutils-3.9/setfiles/Makefile --- old/policycoreutils-3.8.1/setfiles/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setfiles/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -6,7 +6,9 @@ AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) CFLAGS ?= -g -Werror -Wall -W -override LDLIBS += -lselinux -lsepol -lpthread +override CFLAGS += -I../../libselinux/include +override LDFLAGS+= -L../../libselinux/src +override LDLIBS += $(LIBSELINUX_LDLIBS) -lsepol -lpthread ifeq ($(AUDITH), y) override CFLAGS += -DUSE_AUDIT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setfiles/restore.c new/policycoreutils-3.9/setfiles/restore.c --- old/policycoreutils-3.8.1/setfiles/restore.c 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setfiles/restore.c 2025-07-16 12:55:13.000000000 +0200 @@ -36,6 +36,7 @@ opts->restorecon_flags = 0; opts->restorecon_flags = opts->nochange | opts->verbose | opts->progress | opts->set_specctx | + opts->set_user_role | opts->add_assoc | opts->ignore_digest | opts->recurse | opts->userealpath | opts->xdev | opts->abort_on_error | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setfiles/restore.h new/policycoreutils-3.9/setfiles/restore.h --- old/policycoreutils-3.8.1/setfiles/restore.h 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setfiles/restore.h 2025-07-16 12:55:13.000000000 +0200 @@ -24,6 +24,7 @@ unsigned int progress; unsigned int mass_relabel; unsigned int set_specctx; + unsigned int set_user_role; unsigned int add_assoc; unsigned int ignore_digest; unsigned int recurse; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setfiles/restorecon.8 new/policycoreutils-3.9/setfiles/restorecon.8 --- old/policycoreutils-3.8.1/setfiles/restorecon.8 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setfiles/restorecon.8 2025-07-16 12:55:13.000000000 +0200 @@ -11,6 +11,7 @@ .RB [ \-v ] .RB [ \-i ] .RB [ \-F ] +.RB [ \-U ] .RB [ \-W ] .RB [ \-I | \-D ] .RB [ \-x ] @@ -30,6 +31,7 @@ .RB [ \-v ] .RB [ \-i ] .RB [ \-F ] +.RB [ \-U ] .RB [ \-W ] .RB [ \-I | \-D ] .RB [ \-x ] @@ -60,7 +62,9 @@ will only modify the type portion of the security context. The .B \-F -option will force a replacement of the entire context. +and +.B \-U +options will force a replacement of the entire context. .P If a file is labeled with .BR customizable @@ -88,6 +92,10 @@ Force reset of context to match file_context for customizable files, and the default file context, changing the user, role, range portion as well as the type. .TP +.B \-U +In addition to the type portion also change the user and role portions, but +not the range portion. +.TP .B \-h, \-? display usage information and exit. .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setfiles/setfiles.8 new/policycoreutils-3.9/setfiles/setfiles.8 --- old/policycoreutils-3.8.1/setfiles/setfiles.8 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setfiles/setfiles.8 2025-07-16 12:55:13.000000000 +0200 @@ -19,6 +19,7 @@ .RB [ \-v ] .RB [ \-W ] .RB [ \-F ] +.RB [ \-U ] .RB [ \-I | \-D ] .RB [ \-T .IR nthreads ] @@ -52,8 +53,12 @@ .B setfiles will only modify the type portion of the security context. The +.B \-U +option will also modify the user and role portions of the security context. +The .B \-F -option will force a replacement of the entire context. +option will force a replacement of the entire context, including the range +portion of the security context and modify customizable files. .SH "OPTIONS" .TP .B \-c @@ -88,6 +93,10 @@ default file context, changing the user, role, range portion as well as the type. .TP +.B \-U +In addition to the type portion also change the user and role portions, but +not the range portion. +.TP .B \-h, \-? display usage information and exit. .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setfiles/setfiles.c new/policycoreutils-3.9/setfiles/setfiles.c --- old/policycoreutils-3.8.1/setfiles/setfiles.c 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setfiles/setfiles.c 2025-07-16 12:55:13.000000000 +0200 @@ -35,14 +35,14 @@ { if (iamrestorecon) { fprintf(stderr, - "usage: %s [-iIDFmnprRv0xT] [-e excludedir] pathname...\n" - "usage: %s [-iIDFmnprRv0xT] [-e excludedir] -f filename\n", + "usage: %s [-iIDFUmnprRv0xT] [-e excludedir] pathname...\n" + "usage: %s [-iIDFUmnprRv0xT] [-e excludedir] -f filename\n", name, name); } else { fprintf(stderr, - "usage: %s [-diIDlmnpqvCEFWT] [-e excludedir] [-r alt_root_path] [-c policyfile] spec_file pathname...\n" - "usage: %s [-diIDlmnpqvCEFWT] [-e excludedir] [-r alt_root_path] [-c policyfile] spec_file -f filename\n" - "usage: %s -s [-diIDlmnpqvFWT] spec_file\n", + "usage: %s [-diIDlmnpqvCEFUWT] [-e excludedir] [-r alt_root_path] [-c policyfile] spec_file pathname...\n" + "usage: %s [-diIDlmnpqvCEFUWT] [-e excludedir] [-r alt_root_path] [-c policyfile] spec_file -f filename\n" + "usage: %s -s [-diIDlmnpqvFUWT] spec_file\n", name, name, name); } exit(-1); @@ -146,8 +146,8 @@ size_t buf_len, nthreads = 1; const char *base; int errors = 0; - const char *ropts = "e:f:hiIDlmno:pqrsvFRW0xT:"; - const char *sopts = "c:de:f:hiIDlmno:pqr:svCEFR:W0T:"; + const char *ropts = "e:f:hiIDlmno:pqrsvFURW0xT:"; + const char *sopts = "c:de:f:hiIDlmno:pqr:svCEFUR:W0T:"; const char *opts; union selinux_callback cb; long unsigned skipped_errors; @@ -298,6 +298,10 @@ r_opts.set_specctx = SELINUX_RESTORECON_SET_SPECFILE_CTX; break; + case 'U': + r_opts.set_user_role = + SELINUX_RESTORECON_SET_USER_ROLE; + break; case 'm': r_opts.ignore_mounts = SELINUX_RESTORECON_IGNORE_MOUNTS; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/setsebool/Makefile new/policycoreutils-3.9/setsebool/Makefile --- old/policycoreutils-3.8.1/setsebool/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/setsebool/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -6,7 +6,9 @@ BASHCOMPLETIONDIR ?= $(PREFIX)/share/bash-completion/completions CFLAGS ?= -Werror -Wall -W -override LDLIBS += -lselinux -lsemanage +override CFLAGS += -I../../libselinux/include -I../../libsemanage/include +override LDFLAGS+= -L../../libselinux/src -L../../libsemanage/src +override LDLIBS += $(LIBSEMANAGE_LDLIBS) $(LIBSELINUX_LDLIBS) SETSEBOOL_OBJS = setsebool.o BASHCOMPLETIONS=setsebool-bash-completion.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/policycoreutils-3.8.1/unsetfiles/Makefile new/policycoreutils-3.9/unsetfiles/Makefile --- old/policycoreutils-3.8.1/unsetfiles/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/policycoreutils-3.9/unsetfiles/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -2,8 +2,9 @@ SBINDIR ?= $(PREFIX)/sbin MANDIR ?= $(PREFIX)/share/man -override CFLAGS += -D_GNU_SOURCE -override LDLIBS += -lselinux +override CFLAGS += -I../../libselinux/include -D_GNU_SOURCE +override LDFLAGS+= -L../../libselinux/src +override LDLIBS += $(LIBSELINUX_LDLIBS) all: unsetfiles ++++++ selinux-dbus-3.8.1.tar.gz -> selinux-dbus-3.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-dbus-3.8.1/VERSION new/selinux-dbus-3.9/VERSION --- old/selinux-dbus-3.8.1/VERSION 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-dbus-3.9/VERSION 2025-07-16 12:55:13.000000000 +0200 @@ -1 +1 @@ -3.8.1 +3.9 ++++++ selinux-gui-3.8.1.tar.gz -> selinux-gui-3.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-gui-3.8.1/VERSION new/selinux-gui-3.9/VERSION --- old/selinux-gui-3.8.1/VERSION 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-gui-3.9/VERSION 2025-07-16 12:55:13.000000000 +0200 @@ -1 +1 @@ -3.8.1 +3.9 ++++++ selinux-python-3.8.1.tar.gz -> selinux-python-3.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/VERSION new/selinux-python-3.9/VERSION --- old/selinux-python-3.8.1/VERSION 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/VERSION 2025-07-16 12:55:13.000000000 +0200 @@ -1 +1 @@ -3.8.1 +3.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/audit2allow/Makefile new/selinux-python-3.9/audit2allow/Makefile --- old/selinux-python-3.8.1/audit2allow/Makefile 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/audit2allow/Makefile 2025-07-16 12:55:13.000000000 +0200 @@ -8,6 +8,8 @@ MANDIR ?= $(PREFIX)/share/man CFLAGS ?= -Werror -Wall -W +override CFLAGS += -I../../libselinux/include +override LDFLAGS+= -L../../libselinux/src # If no specific libsepol.a is specified, fall back on LDFLAGS search path # Otherwise, as $(LIBSEPOLA) already appears in the dependencies, there diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/semanage/semanage new/selinux-python-3.9/semanage/semanage --- old/selinux-python-3.8.1/semanage/semanage 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/semanage/semanage 2025-07-16 12:55:13.000000000 +0200 @@ -54,7 +54,7 @@ usage_login_dict = {' --add': ('-s SEUSER', '-r RANGE', 'LOGIN',), ' --modify': ('-s SEUSER', '-r RANGE', 'LOGIN',), ' --delete': ('LOGIN',), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} usage_fcontext = "semanage fcontext [-h] [-n] [-N] [-S STORE] [" -usage_fcontext_dict = {' --add': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --delete': ('(', '-t TYPE', '-f FTYPE', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --modify': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --list': ('[-C]',), ' --extract': ('',), ' --deleteall': ('',)} +usage_fcontext_dict = {' --add': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e TARGET_PATH', ')', 'FILE_SPEC',), ' --delete': ('(', '-t TYPE', '-f FTYPE', '|', '-e TARGET_PATH', ')', 'FILE_SPEC',), ' --modify': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e TARGET_PATH', ')', 'FILE_SPEC',), ' --list': ('[-C]',), ' --extract': ('',), ' --deleteall': ('',)} usage_user = "semanage user [-h] [-n] [-N] [-S STORE] [" usage_user_dict = {' --add': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', 'SEUSER', ')'), ' --delete': ('SEUSER',), ' --modify': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', '-s SEUSER', 'SEUSER', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} @@ -306,7 +306,7 @@ def handleFcontext(args): fcontext_args = {'list': [('equal', 'ftype', 'seuser', 'type'), ('')], 'add': [('locallist'), ('type', 'file_spec')], 'modify': [('locallist'), ('type', 'file_spec')], 'delete': [('locallist'), ('file_spec')], 'extract': [('locallist', 'equal', 'ftype', 'seuser', 'type'), ('')], 'deleteall': [('locallist'), ('')]} # we can not use mutually for equal because we can define some actions together with equal - fcontext_equal_args = {'equal': [('list', 'locallist', 'type', 'ftype', 'seuser', 'deleteall', 'extract'), ()]} + fcontext_equal_args = {'equal': [('list', 'locallist', 'type', 'ftype', 'seuser', 'deleteall', 'extract'), ('file_spec')]} if args.action and args.equal: handle_opts(args, fcontext_equal_args, "equal") @@ -355,9 +355,10 @@ parser_add_extract(fcontext_action, "fcontext") parser_add_deleteall(fcontext_action, "fcontext") - fcontextParser.add_argument('-e', '--equal', help=_( - 'Substitute target path with sourcepath when generating default label. This is used with fcontext. Requires source and target \ -path arguments. The context labeling for the target subtree is made equivalent to that defined for the source.' + fcontextParser.add_argument('-e', '--equal', metavar='TARGET_PATH', help=_( + 'Substitute FILE_SPEC with TARGET_PATH for file label lookup. This is used with fcontext. Requires source and target \ +path arguments to be path prefixes and does not support regular expressions. \ +The context labeling for the target subtree is made equivalent to that defined for the source.' )) fcontextParser.add_argument('-f', '--ftype', default="", choices=["a", "f", "d", "c", "b", "s", "l", "p"], help=_( 'File Type. This is used with fcontext. Requires a file type as shown in the mode field by ls, e.g. use d to match only \ @@ -368,7 +369,7 @@ parser_add_seuser(fcontextParser, "fcontext") parser_add_type(fcontextParser, "fcontext") parser_add_range(fcontextParser, "fcontext") - fcontextParser.add_argument('file_spec', nargs='?', default=None, help=_('Path to be labeled (may be in the form of a Perl compatible regular expression)')) + fcontextParser.add_argument('file_spec', nargs='?', default=None, metavar='FILE_SPEC', help=_('Path to be labeled (may be in the form of a Perl compatible regular expression)')) fcontextParser.set_defaults(func=handleFcontext) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/semanage/semanage-fcontext.8 new/selinux-python-3.9/semanage/semanage-fcontext.8 --- old/selinux-python-3.8.1/semanage/semanage-fcontext.8 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/semanage/semanage-fcontext.8 2025-07-16 12:55:13.000000000 +0200 @@ -3,7 +3,7 @@ semanage\-fcontext \- SELinux Policy Management file context tool .SH "SYNOPSIS" -.B semanage fcontext [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add ( \-t TYPE \-f FTYPE \-r RANGE \-s SEUSER | \-e EQUAL ) FILE_SPEC | \-\-delete ( \-t TYPE \-f FTYPE | \-e EQUAL ) FILE_SPEC | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify ( \-t TYPE \-f FTYPE \-r RANGE \-s SEUSER | \-e EQUAL ) FILE_SPEC ] +.B semanage fcontext [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add ( \-t TYPE \-f FTYPE \-r RANGE \-s SEUSER | \-e TARGET_PATH ) FILE_SPEC | \-\-delete ( \-t TYPE \-f FTYPE | \-e TARGET_PATH ) FILE_SPEC | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify ( \-t TYPE \-f FTYPE \-r RANGE \-s SEUSER | \-e TARGET_PATH ) FILE_SPEC ] .SH "DESCRIPTION" semanage is used to configure certain elements of @@ -66,8 +66,8 @@ .I \-D, \-\-deleteall Remove all local customizations .TP -.I \-e EQUAL, \-\-equal EQUAL -Substitute target path with sourcepath when generating default label. This is used with fcontext. Requires source and target path arguments. The context labeling for the target subtree is made equivalent to that defined for the source. +.I \-e TARGET_PATH, \-\-equal TARGET_PATH +Substitute FILE_SPEC with TARGET_PATH for file label lookup. This is used with fcontext. Requires source and target path arguments to be path prefixes and does not support regular expressions. The context labeling for the target subtree is made equivalent to that defined for the source. .TP .I \-f [{a,f,d,c,b,s,l,p}], \-\-ftype [{a,f,d,c,b,s,l,p}] File Type. This is used with fcontext. Requires a file type as shown in the mode field by ls, e.g. use 'd' to match only directories or 'f' to match only regular files. The following file type options can be passed: f (regular file),d (directory),c (character device), b (block device),s (socket),l (symbolic link),p (named pipe). If you do not specify a file type, the file type will default to "all files". diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/sepolgen/VERSION new/selinux-python-3.9/sepolgen/VERSION --- old/selinux-python-3.8.1/sepolgen/VERSION 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/sepolgen/VERSION 2025-07-16 12:55:13.000000000 +0200 @@ -1 +1 @@ -3.8.1 +3.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/sepolicy/sepolicy.py new/selinux-python-3.9/sepolicy/sepolicy.py --- old/selinux-python-3.8.1/sepolicy/sepolicy.py 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/sepolicy/sepolicy.py 2025-07-16 12:55:13.000000000 +0200 @@ -25,7 +25,7 @@ import sys import selinux import sepolicy -from multiprocessing import Pool +import multiprocessing from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text import argparse PROGNAME = "selinux-python" @@ -350,7 +350,8 @@ manpage_domains = set() manpage_roles = set() - p = Pool() + multiprocessing.set_start_method('fork') + p = multiprocessing.Pool() async_results = [] for domain in test_domains: async_results.append(p.apply_async(manpage_work, [domain, path, args.root, args.source_files, args.web])) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-3.8.1/sepolicy/setup.py new/selinux-python-3.9/sepolicy/setup.py --- old/selinux-python-3.8.1/sepolicy/setup.py 2025-03-05 19:59:06.000000000 +0100 +++ new/selinux-python-3.9/sepolicy/setup.py 2025-07-16 12:55:13.000000000 +0200 @@ -6,7 +6,7 @@ setup( name="sepolicy", - version="3.8.1", + version="3.9", description="Python SELinux Policy Analyses bindings", author="Daniel Walsh", author_email="dwa...@redhat.com", ++++++ semodule-utils-3.8.1.tar.gz -> semodule-utils-3.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semodule-utils-3.8.1/VERSION new/semodule-utils-3.9/VERSION --- old/semodule-utils-3.8.1/VERSION 2025-03-05 19:59:06.000000000 +0100 +++ new/semodule-utils-3.9/VERSION 2025-07-16 12:55:13.000000000 +0200 @@ -1 +1 @@ -3.8.1 +3.9 ++++++ usr_etc.patch ++++++ >From 6941162cd2a2375df8d2095abcba86a53aff7418 Mon Sep 17 00:00:00 2001 From: Stefan Schubert <sch...@suse.de> Date: Fri, 15 Dec 2023 13:22:31 +0100 Subject: [PATCH] Using vendor defined directories for configuration files besides user/admin defined configuration files. Signed-off-by: Stefan Schubert <sch...@suse.de> --- policycoreutils/sestatus/Makefile | 8 +++ policycoreutils/sestatus/sestatus.c | 79 ++++++++++++++++++++++-- policycoreutils/sestatus/sestatus.conf.5 | 2 +- 4 files changed, 90 insertions(+), 5 deletions(-) diff --git a/policycoreutils/sestatus/Makefile b/policycoreutils/sestatus/Makefile index aebf050c2..bb1f6bda0 100644 --- a/policycoreutils/sestatus/Makefile +++ b/policycoreutils/sestatus/Makefile @@ -5,6 +5,7 @@ BINDIR ?= $(PREFIX)/bin SBINDIR ?= $(PREFIX)/sbin MANDIR = $(PREFIX)/share/man ETCDIR ?= /etc +LIBECONFH ?= $(shell test -f /usr/include/libeconf.h && echo y) CFLAGS ?= -Werror -Wall -W override CFLAGS += -I../../libselinux/include -D_FILE_OFFSET_BITS=64 @@ -13,6 +14,13 @@ override LDLIBS += -lselinux all: sestatus sestatus: sestatus.o +ifdef VENDORDIR +ifneq ($(LIBECONFH), y) + (echo "VENDORDIR defined but libeconf not available."; exit 1) +endif +override CFLAGS += -DVENDORDIR='"${VENDORDIR}"' +override LDLIBS += -leconf +endif install: all [ -d $(DESTDIR)$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/man8 diff --git a/policycoreutils/sestatus/sestatus.c b/policycoreutils/sestatus/sestatus.c index 6c95828ed..f80612dcd 100644 --- a/policycoreutils/sestatus/sestatus.c +++ b/policycoreutils/sestatus/sestatus.c @@ -21,11 +21,16 @@ #define PROC_BASE "/proc" #define MAX_CHECK 50 -#define CONF "/etc/sestatus.conf" +#define CONFDIR "/etc" +#define CONFNAME "sestatus" +#define CONFPOST "conf" +#define CONF CONFDIR "/" CONFNAME "." CONFPOST /* conf file sections */ -#define PROCS "[process]" -#define FILES "[files]" +#define SECTIONPROCS "process" +#define SECTIONFILES "files" +#define PROCS "[" SECTIONPROCS "]" +#define FILES "[" SECTIONFILES "]" /* buffer size for cmp_cmdline */ #define BUFSIZE 255 @@ -92,9 +97,75 @@ static int pidof(const char *command) return ret; } -static void load_checks(char *pc[], int *npc, char *fc[], int *nfc) +#ifdef VENDORDIR +#include <libeconf.h> + +static void load_checks_with_vendor_settings(char *pc[], int *npc, char *fc[], int *nfc) { + econf_file *key_file = NULL; + econf_err error; + char **keys; + size_t key_number; + + error = econf_readDirs (&key_file, + VENDORDIR, + CONFDIR, + CONFNAME, + CONFPOST, + "", "#"); + if (error != ECONF_SUCCESS) { + printf("\nCannot read settings %s.%s: %s\n", + CONFNAME, + CONFPOST, + econf_errString( error )); + return; + } + + error = econf_getKeys(key_file, SECTIONPROCS, &key_number, &keys); + if (error != ECONF_SUCCESS) { + printf("\nCannot read group %s: %s\n", + SECTIONPROCS, + econf_errString( error )); + } else { + for (size_t i = 0; i < key_number; i++) { + if (*npc >= MAX_CHECK) + break; + pc[*npc] = strdup(keys[i]); + if (!pc[*npc]) + break; + (*npc)++; + } + econf_free (keys); + } + + error = econf_getKeys(key_file, SECTIONFILES, &key_number, &keys); + if (error != ECONF_SUCCESS) { + printf("\nCannot read group %s: %s\n", + SECTIONFILES, + econf_errString( error )); + } else { + for (size_t i = 0; i < key_number; i++) { + if (*nfc >= MAX_CHECK) + break; + fc[*nfc] = strdup(keys[i]); + if (!fc[*nfc]) + break; + (*nfc)++; + } + econf_free (keys); + } + econf_free (key_file); + return; +} +#endif + +static void load_checks(char *pc[], int *npc, char *fc[], int *nfc) +{ +#ifdef VENDORDIR + load_checks_with_vendor_settings(pc, npc, fc, nfc); + return; +#endif FILE *fp = fopen(CONF, "r"); char buf[255], *bufp; int buf_len, section = -1; diff --git a/policycoreutils/sestatus/sestatus.conf.5 b/policycoreutils/sestatus/sestatus.conf.5 index acfedf6f5..01f8051d2 100644 --- a/policycoreutils/sestatus/sestatus.conf.5 +++ b/policycoreutils/sestatus/sestatus.conf.5 @@ -8,7 +8,7 @@ The \fIsestatus.conf\fR file is used by the \fBsestatus\fR(8) command with the \ .sp The fully qualified path name of the configuration file is: .RS -\fI/etc/sestatus.conf\fR +\fI/etc/sestatus.conf\fR or \fI<vendordir>/sestatus.conf\fR if it is not available .RE .RE .sp