From 359d6dac92dc4d674621baec420492ecc2ab83c6 Mon Sep 17 00:00:00 2001
From: Daniel J Walsh
Date: Tue, 2 Dec 2008 19:34:21 +0000
Subject: [PATCH] - Fix labeling on /var/spool/rsyslog
---
policy-20081111.patch | 27053 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 27053 insertions(+)
create mode 100644 policy-20081111.patch
diff --git a/policy-20081111.patch b/policy-20081111.patch
new file mode 100644
index 00000000..239570d3
--- /dev/null
+++ b/policy-20081111.patch
@@ -0,0 +1,27053 @@
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/Makefile serefpolicy-3.6.1/Makefile
+--- nsaserefpolicy/Makefile 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/Makefile 2008-11-25 09:45:43.000000000 -0500
+@@ -315,20 +315,22 @@
+
+ # parse-rolemap modulename,outputfile
+ define parse-rolemap
+- $(verbose) $(M4) $(M4PARAM) $(rolemap) | \
+- $(AWK) '/^[[:blank:]]*[A-Za-z]/{ print "gen_require(type " $$3 "; role " $$1 ";)\n$1_per_role_template(" $$2 "," $$3 "," $$1 ")" }' >> $2
++ echo "" >> $2
++# $(verbose) $(M4) $(M4PARAM) $(rolemap) | \
++# $(AWK) '/^[[:blank:]]*[A-Za-z]/{ print "gen_require(type " $$3 "; role " $$1 ";)\n$1_per_role_template(" $$2 "," $$3 "," $$1 ")" }' >> $2
+ endef
+
+ # perrole-expansion modulename,outputfile
+ define perrole-expansion
+- $(verbose) echo "ifdef(\`""$1""_per_role_template',\`" > $2
+- $(call parse-rolemap,$1,$2)
+- $(verbose) echo "')" >> $2
+-
+- $(verbose) echo "ifdef(\`""$1""_per_userdomain_template',\`" >> $2
+- $(verbose) echo "errprint(\`Warning: per_userdomain_templates have been renamed to per_role_templates (""$1""_per_userdomain_template)'__endline__)" >> $2
+- $(call parse-rolemap-compat,$1,$2)
+- $(verbose) echo "')" >> $2
++ echo "No longer doing perrole-expansion"
++# $(verbose) echo "ifdef(\`""$1""_per_role_template',\`" > $2
++# $(call parse-rolemap,$1,$2)
++# $(verbose) echo "')" >> $2
++
++# $(verbose) echo "ifdef(\`""$1""_per_userdomain_template',\`" >> $2
++# $(verbose) echo "errprint(\`Warning: per_userdomain_templates have been renamed to per_role_templates (""$1""_per_userdomain_template)'__endline__)" >> $2
++# $(call parse-rolemap-compat,$1,$2)
++# $(verbose) echo "')" >> $2
+ endef
+
+ # create-base-per-role-tmpl modulenames,outputfile
+@@ -527,6 +529,10 @@
+ @mkdir -p $(appdir)/users
+ $(verbose) $(INSTALL) -m 644 $^ $@
+
++$(appdir)/initrc_context: $(tmpdir)/initrc_context
++ @mkdir -p $(appdir)
++ $(verbose) $(INSTALL) -m 644 $< $@
++
+ $(appdir)/%: $(appconf)/%
+ @mkdir -p $(appdir)
+ $(verbose) $(INSTALL) -m 644 $< $@
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/Rules.modular serefpolicy-3.6.1/Rules.modular
+--- nsaserefpolicy/Rules.modular 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/Rules.modular 2008-11-25 09:45:43.000000000 -0500
+@@ -73,8 +73,8 @@
+ $(tmpdir)/%.mod: $(m4support) $(tmpdir)/generated_definitions.conf $(tmpdir)/all_interfaces.conf %.te
+ @echo "Compliling $(NAME) $(@F) module"
+ @test -d $(tmpdir) || mkdir -p $(tmpdir)
+- $(call perrole-expansion,$(basename $(@F)),$@.role)
+- $(verbose) $(M4) $(M4PARAM) -s $^ $@.role > $(@:.mod=.tmp)
++# $(call perrole-expansion,$(basename $(@F)),$@.role)
++ $(verbose) $(M4) $(M4PARAM) -s $^ > $(@:.mod=.tmp)
+ $(verbose) $(CHECKMODULE) -m $(@:.mod=.tmp) -o $@
+
+ $(tmpdir)/%.mod.fc: $(m4support) %.fc
+@@ -129,7 +129,7 @@
+ @test -d $(tmpdir) || mkdir -p $(tmpdir)
+ # define all available object classes
+ $(verbose) $(genperm) $(avs) $(secclass) > $@
+- $(verbose) $(call create-base-per-role-tmpl,$(patsubst %.te,%,$(base_mods)),$@)
++# $(verbose) $(call create-base-per-role-tmpl,$(patsubst %.te,%,$(base_mods)),$@)
+ $(verbose) test -f $(booleans) && $(setbools) $(booleans) >> $@ || true
+
+ $(tmpdir)/global_bools.conf: M4PARAM += -D self_contained_policy
+@@ -146,7 +146,7 @@
+ $(tmpdir)/rolemap.conf: M4PARAM += -D self_contained_policy
+ $(tmpdir)/rolemap.conf: $(rolemap)
+ $(verbose) echo "" > $@
+- $(call parse-rolemap,base,$@)
++# $(call parse-rolemap,base,$@)
+
+ $(tmpdir)/all_te_files.conf: M4PARAM += -D self_contained_policy
+ $(tmpdir)/all_te_files.conf: $(m4support) $(tmpdir)/generated_definitions.conf $(tmpdir)/all_interfaces.conf $(base_te_files) $(tmpdir)/rolemap.conf
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/default_contexts serefpolicy-3.6.1/config/appconfig-mcs/default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,15 +1,6 @@
+-system_r:crond_t:s0 user_r:cronjob_t:s0 staff_r:cronjob_t:s0 sysadm_r:cronjob_t:s0 system_r:cronjob_t:s0 unconfined_r:unconfined_cronjob_t:s0
+-system_r:local_login_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0 unconfined_r:unconfined_t:s0
+-system_r:remote_login_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 unconfined_r:unconfined_t:s0
+-system_r:sshd_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0 unconfined_r:unconfined_t:s0
++system_r:crond_t:s0 system_r:system_cronjob_t:s0
++system_r:local_login_t:s0 user_r:user_t:s0
++system_r:remote_login_t:s0 user_r:user_t:s0
++system_r:sshd_t:s0 user_r:user_t:s0
+ system_r:sulogin_t:s0 sysadm_r:sysadm_t:s0
+-system_r:xdm_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0 unconfined_r:unconfined_t:s0
+-
+-staff_r:staff_su_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-staff_r:staff_sudo_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
+-
+-sysadm_r:sysadm_su_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
+-
+-user_r:user_su_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-user_r:user_sudo_t:s0 sysadm_r:sysadm_t:s0 user_r:user_t:s0
++system_r:xdm_t:s0 user_r:user_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/failsafe_context serefpolicy-3.6.1/config/appconfig-mcs/failsafe_context
+--- nsaserefpolicy/config/appconfig-mcs/failsafe_context 2008-08-07 11:15:14.000000000 -0400
++++ serefpolicy-3.6.1/config/appconfig-mcs/failsafe_context 2008-11-25 09:45:43.000000000 -0500
+@@ -1 +1 @@
+-sysadm_r:sysadm_t:s0
++system_r:unconfined_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/guest_u_default_contexts serefpolicy-3.6.1/config/appconfig-mcs/guest_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/guest_u_default_contexts 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/guest_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,6 @@
++system_r:local_login_t:s0 guest_r:guest_t:s0
++system_r:remote_login_t:s0 guest_r:guest_t:s0
++system_r:sshd_t:s0 guest_r:guest_t:s0
++system_r:crond_t:s0 guest_r:guest_t:s0
++system_r:initrc_su_t:s0 guest_r:guest_t:s0
++guest_r:guest_t:s0 guest_r:guest_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/root_default_contexts serefpolicy-3.6.1/config/appconfig-mcs/root_default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/root_default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/root_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,11 +1,7 @@
+-system_r:crond_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:cronjob_t:s0 staff_r:cronjob_t:s0 user_r:cronjob_t:s0
++system_r:crond_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+ system_r:local_login_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+
+-staff_r:staff_su_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+-sysadm_r:sysadm_su_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+-user_r:user_su_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+-
+ #
+ # Uncomment if you want to automatically login as sysadm_r
+ #
+-#system_r:sshd_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
++system_r:sshd_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/seusers serefpolicy-3.6.1/config/appconfig-mcs/seusers
+--- nsaserefpolicy/config/appconfig-mcs/seusers 2008-08-07 11:15:14.000000000 -0400
++++ serefpolicy-3.6.1/config/appconfig-mcs/seusers 2008-11-25 09:45:43.000000000 -0500
+@@ -1,3 +1,3 @@
+ system_u:system_u:s0-mcs_systemhigh
+-root:root:s0-mcs_systemhigh
+-__default__:user_u:s0
++root:unconfined_u:s0-mcs_systemhigh
++__default__:unconfined_u:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/staff_u_default_contexts serefpolicy-3.6.1/config/appconfig-mcs/staff_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/staff_u_default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/staff_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,10 +1,12 @@
+ system_r:local_login_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+ system_r:remote_login_t:s0 staff_r:staff_t:s0
+ system_r:sshd_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-system_r:crond_t:s0 staff_r:cronjob_t:s0
++system_r:crond_t:s0 staff_r:staff_t:s0
+ system_r:xdm_t:s0 staff_r:staff_t:s0
+ staff_r:staff_su_t:s0 staff_r:staff_t:s0
+ staff_r:staff_sudo_t:s0 staff_r:staff_t:s0
++system_r:initrc_su_t:s0 staff_r:staff_t:s0
++staff_r:staff_t:s0 staff_r:staff_t:s0
+ sysadm_r:sysadm_su_t:s0 sysadm_r:sysadm_t:s0
+ sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
+
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/unconfined_u_default_contexts serefpolicy-3.6.1/config/appconfig-mcs/unconfined_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/unconfined_u_default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/unconfined_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,4 +1,4 @@
+-system_r:crond_t:s0 unconfined_r:unconfined_t:s0 unconfined_r:unconfined_cronjob_t:s0
++system_r:crond_t:s0 unconfined_r:unconfined_t:s0
+ system_r:initrc_t:s0 unconfined_r:unconfined_t:s0
+ system_r:local_login_t:s0 unconfined_r:unconfined_t:s0
+ system_r:remote_login_t:s0 unconfined_r:unconfined_t:s0
+@@ -6,4 +6,6 @@
+ system_r:sshd_t:s0 unconfined_r:unconfined_t:s0
+ system_r:sysadm_su_t:s0 unconfined_r:unconfined_t:s0
+ system_r:unconfined_t:s0 unconfined_r:unconfined_t:s0
++system_r:initrc_su_t:s0 unconfined_r:unconfined_t:s0
++unconfined_r:unconfined_t:s0 unconfined_r:unconfined_t:s0
+ system_r:xdm_t:s0 unconfined_r:unconfined_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/user_u_default_contexts serefpolicy-3.6.1/config/appconfig-mcs/user_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/user_u_default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/user_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,8 +1,9 @@
+ system_r:local_login_t:s0 user_r:user_t:s0
+ system_r:remote_login_t:s0 user_r:user_t:s0
+ system_r:sshd_t:s0 user_r:user_t:s0
+-system_r:crond_t:s0 user_r:cronjob_t:s0
++system_r:crond_t:s0 user_r:user_t:s0
+ system_r:xdm_t:s0 user_r:user_t:s0
+ user_r:user_su_t:s0 user_r:user_t:s0
+ user_r:user_sudo_t:s0 user_r:user_t:s0
+-
++system_r:initrc_su_t:s0 user_r:user_t:s0
++user_r:user_t:s0 user_r:user_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/userhelper_context serefpolicy-3.6.1/config/appconfig-mcs/userhelper_context
+--- nsaserefpolicy/config/appconfig-mcs/userhelper_context 2008-08-07 11:15:14.000000000 -0400
++++ serefpolicy-3.6.1/config/appconfig-mcs/userhelper_context 2008-11-25 09:45:43.000000000 -0500
+@@ -1 +1 @@
+-system_u:sysadm_r:sysadm_t:s0
++system_u:system_r:unconfined_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mcs/xguest_u_default_contexts serefpolicy-3.6.1/config/appconfig-mcs/xguest_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mcs/xguest_u_default_contexts 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mcs/xguest_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,7 @@
++system_r:local_login_t xguest_r:xguest_t:s0
++system_r:remote_login_t xguest_r:xguest_t:s0
++system_r:sshd_t xguest_r:xguest_t:s0
++system_r:crond_t xguest_r:xguest_t:s0
++system_r:xdm_t xguest_r:xguest_t:s0
++system_r:initrc_su_t:s0 xguest_r:xguest_t:s0
++xguest_r:xguest_t:s0 xguest_r:xguest_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mls/default_contexts serefpolicy-3.6.1/config/appconfig-mls/default_contexts
+--- nsaserefpolicy/config/appconfig-mls/default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mls/default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,15 +1,6 @@
+-system_r:crond_t:s0 user_r:cronjob_t:s0 staff_r:cronjob_t:s0 sysadm_r:cronjob_t:s0 system_r:cronjob_t:s0 unconfined_r:unconfined_cronjob_t:s0
+-system_r:local_login_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0 unconfined_r:unconfined_t:s0
+-system_r:remote_login_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 unconfined_r:unconfined_t:s0
+-system_r:sshd_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0 unconfined_r:unconfined_t:s0
++system_r:crond_t:s0 system_r:system_crond_t:s0
++system_r:local_login_t:s0 user_r:user_t:s0
++system_r:remote_login_t:s0 user_r:user_t:s0
++system_r:sshd_t:s0 user_r:user_t:s0
+ system_r:sulogin_t:s0 sysadm_r:sysadm_t:s0
+-system_r:xdm_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0 unconfined_r:unconfined_t:s0
+-
+-staff_r:staff_su_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-staff_r:staff_sudo_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
+-
+-sysadm_r:sysadm_su_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
+-
+-user_r:user_su_t:s0 user_r:user_t:s0 staff_r:staff_t:s0 sysadm_r:sysadm_t:s0
+-user_r:user_sudo_t:s0 sysadm_r:sysadm_t:s0 user_r:user_t:s0
++system_r:xdm_t:s0 user_r:user_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mls/guest_u_default_contexts serefpolicy-3.6.1/config/appconfig-mls/guest_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mls/guest_u_default_contexts 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mls/guest_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,4 @@
++system_r:local_login_t:s0 guest_r:guest_t:s0
++system_r:remote_login_t:s0 guest_r:guest_t:s0
++system_r:sshd_t:s0 guest_r:guest_t:s0
++system_r:crond_t:s0 guest_r:guest_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mls/root_default_contexts serefpolicy-3.6.1/config/appconfig-mls/root_default_contexts
+--- nsaserefpolicy/config/appconfig-mls/root_default_contexts 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mls/root_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -1,11 +1,11 @@
+-system_r:crond_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:cronjob_t:s0 staff_r:cronjob_t:s0 user_r:cronjob_t:s0
+-system_r:local_login_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
++system_r:crond_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
++system_r:local_login_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
+
+-staff_r:staff_su_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+-sysadm_r:sysadm_su_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
+-user_r:user_su_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
++staff_r:staff_su_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
++sysadm_r:sysadm_su_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
++user_r:user_su_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
+
+ #
+ # Uncomment if you want to automatically login as sysadm_r
+ #
+-#system_r:sshd_t:s0 unconfined_r:unconfined_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0 user_r:user_t:s0
++#system_r:sshd_t:s0 sysadm_r:sysadm_t:s0 staff_r:staff_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/config/appconfig-mls/xguest_u_default_contexts serefpolicy-3.6.1/config/appconfig-mls/xguest_u_default_contexts
+--- nsaserefpolicy/config/appconfig-mls/xguest_u_default_contexts 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/config/appconfig-mls/xguest_u_default_contexts 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,7 @@
++system_r:local_login_t xguest_r:xguest_t:s0
++system_r:remote_login_t xguest_r:xguest_t:s0
++system_r:sshd_t xguest_r:xguest_t:s0
++system_r:crond_t xguest_r:xguest_t:s0
++system_r:xdm_t xguest_r:xguest_t:s0
++system_r:initrc_su_t:s0 xguest_r:xguest_t:s0
++xguest_r:xguest_t:s0 xguest_r:xguest_t:s0
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/man/man8/samba_selinux.8 serefpolicy-3.6.1/man/man8/samba_selinux.8
+--- nsaserefpolicy/man/man8/samba_selinux.8 2008-08-07 11:15:14.000000000 -0400
++++ serefpolicy-3.6.1/man/man8/samba_selinux.8 2008-11-25 09:45:43.000000000 -0500
+@@ -14,11 +14,17 @@
+ .TP
+ chcon -t samba_share_t /var/eng
+ .TP
+-If you want to make this permanant, i.e. survive a relabel, you must add an entry to the file_contexts.local file.
++To make this change permanent (survive a relabel), use the semanage command to add the change to file context configuration:
++.TP
++semanage fcontext -a -t samba_share_t "/var/eng(/.*)?"
++.TP
++This command adds the following entry to /etc/selinux/POLICYTYPE/contexts/files/file_contexts.local:
+ .TP
+-/etc/selinux/POLICYTYPE/contexts/files/file_contexts.local
+-.br
+ /var/eng(/.*)? system_u:object_r:samba_share_t
++.TP
++Run the restorecon command to apply the changes:
++.TP
++restorecon -R -v /var/eng/
+
+ .SH SHARING FILES
+ If you want to share files with multiple domains (Apache, FTP, rsync, Samba), you can set a file context of public_content_t and public_content_rw_t. These context allow any of the above domains to read the content. If you want a particular domain to write to the public_content_rw_t domain, you must set the appropriate boolean. allow_DOMAIN_anon_write. So for samba you would execute:
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/flask/access_vectors serefpolicy-3.6.1/policy/flask/access_vectors
+--- nsaserefpolicy/policy/flask/access_vectors 2008-08-07 11:15:00.000000000 -0400
++++ serefpolicy-3.6.1/policy/flask/access_vectors 2008-11-25 09:45:43.000000000 -0500
+@@ -616,6 +616,7 @@
+ nlmsg_write
+ nlmsg_relay
+ nlmsg_readpriv
++ nlmsg_tty_audit
+ }
+
+ class netlink_ip6fw_socket
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/global_tunables serefpolicy-3.6.1/policy/global_tunables
+--- nsaserefpolicy/policy/global_tunables 2008-11-11 16:13:50.000000000 -0500
++++ serefpolicy-3.6.1/policy/global_tunables 2008-11-25 09:45:43.000000000 -0500
+@@ -61,15 +61,6 @@
+
+ ##
+ ##
+-## Allow email client to various content.
+-## nfs, samba, removable devices, and user temp
+-## files
+-##
+-##
+-gen_tunable(mail_read_content,false)
+-
+-##
+-##
+ ## Allow any files/directories to be exported read/write via NFS.
+ ##
+ ##
+@@ -111,3 +102,12 @@
+ ##
+ ##
+ gen_tunable(user_tcp_server,false)
++
++##
+ ##
+ ## Allow Apache to modify public files
+@@ -30,10 +32,17 @@
+
+ ##
+ ##
+-## Allow Apache to use mod_auth_pam
++## Allow httpd scripts and modules execmem/execstack
+ ##
+ ##
+-gen_tunable(allow_httpd_mod_auth_pam, false)
++gen_tunable(httpd_execmem, false)
++
++##
++##
++## Allow Apache to communicate with avahi service via dbus
++##
++##
++gen_tunable(httpd_dbus_avahi, false)
+
+ ##
+ ##
+@@ -44,6 +53,13 @@
+
+ ##
+ ##
++## Allow http daemon to send mail
++##
++##
++gen_tunable(httpd_can_sendmail, false)
++
++##
++##
+ ## Allow HTTPD scripts and modules to connect to the network using TCP.
+ ##
+ ##
+@@ -108,6 +124,29 @@
+ ##
+ gen_tunable(httpd_unified, false)
+
++##
++##
++## Allow httpd to access nfs file systems
++##
++##
++gen_tunable(httpd_use_nfs, false)
++
++##
++##
++## Allow httpd to access cifs file systems
++##
++##
++gen_tunable(httpd_use_cifs, false)
++
++##
++##
++## Allow apache scripts to write to public content. Directories/Files must be labeled public_content_rw_t.
++##
++##
++gen_tunable(allow_httpd_sys_script_anon_write, false)
++
++attribute httpd_ro_content;
++attribute httpd_rw_content;
+ attribute httpdcontent;
+ attribute httpd_user_content_type;
+
+@@ -140,6 +179,9 @@
+ domain_entry_file(httpd_helper_t, httpd_helper_exec_t)
+ role system_r types httpd_helper_t;
+
++type httpd_initrc_exec_t;
++init_script_file(httpd_initrc_exec_t)
++
+ type httpd_lock_t;
+ files_lock_file(httpd_lock_t)
+
+@@ -180,6 +222,10 @@
+ # setup the system domain for system CGI scripts
+ apache_content_template(sys)
+
++typeattribute httpd_sys_content_t httpdcontent, httpd_ro_content; # customizable
++typeattribute httpd_sys_content_rw_t httpdcontent, httpd_rw_content; # customizable
++typeattribute httpd_sys_content_ra_t httpdcontent; # customizable
++
+ type httpd_tmp_t;
+ files_tmp_file(httpd_tmp_t)
+
+@@ -196,6 +242,7 @@
+ userdom_user_home_content(httpd_user_script_rw_t)
+ typeattribute httpd_user_script_t httpd_script_domains;
+ typealias httpd_user_content_t alias { httpd_staff_content_t httpd_sysadm_content_t };
++typealias httpd_user_content_t alias httpd_unconfined_content_t;
+ typealias httpd_user_content_t alias { httpd_auditadm_content_t httpd_secadm_content_t };
+ typealias httpd_user_htaccess_t alias { httpd_staff_htaccess_t httpd_sysadm_htaccess_t };
+ typealias httpd_user_htaccess_t alias { httpd_auditadm_htaccess_t httpd_secadm_htaccess_t };
+@@ -230,7 +277,7 @@
+ # Apache server local policy
+ #
+
+-allow httpd_t self:capability { chown dac_override kill setgid setuid sys_tty_config };
++allow httpd_t self:capability { chown dac_override kill setgid setuid sys_nice sys_tty_config };
+ dontaudit httpd_t self:capability { net_admin sys_tty_config };
+ allow httpd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
+ allow httpd_t self:fd use;
+@@ -272,6 +319,7 @@
+ allow httpd_t httpd_modules_t:dir list_dir_perms;
+ mmap_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
+ read_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
++read_lnk_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
+
+ apache_domtrans_rotatelogs(httpd_t)
+ # Apache-httpd needs to be able to send signals to the log rotate procs.
+@@ -283,9 +331,9 @@
+
+ allow httpd_t httpd_suexec_exec_t:file read_file_perms;
+
+-allow httpd_t httpd_sys_content_t:dir list_dir_perms;
+-read_files_pattern(httpd_t, httpd_sys_content_t, httpd_sys_content_t)
+-read_lnk_files_pattern(httpd_t, httpd_sys_content_t, httpd_sys_content_t)
++allow httpd_t httpd_ro_content:dir list_dir_perms;
++read_files_pattern(httpd_t, httpd_ro_content, httpd_ro_content)
++read_lnk_files_pattern(httpd_t, httpd_ro_content, httpd_ro_content)
+
+ manage_dirs_pattern(httpd_t, httpd_tmp_t, httpd_tmp_t)
+ manage_files_pattern(httpd_t, httpd_tmp_t, httpd_tmp_t)
+@@ -301,6 +349,7 @@
+ manage_files_pattern(httpd_t, httpd_var_lib_t, httpd_var_lib_t)
+ files_var_lib_filetrans(httpd_t, httpd_var_lib_t, file)
+
++setattr_dirs_pattern(httpd_t, httpd_var_run_t, httpd_var_run_t)
+ manage_files_pattern(httpd_t, httpd_var_run_t, httpd_var_run_t)
+ manage_sock_files_pattern(httpd_t, httpd_var_run_t, httpd_var_run_t)
+ files_pid_filetrans(httpd_t, httpd_var_run_t, { file sock_file })
+@@ -312,6 +361,7 @@
+ kernel_read_kernel_sysctls(httpd_t)
+ # for modules that want to access /proc/meminfo
+ kernel_read_system_state(httpd_t)
++kernel_search_network_sysctl(httpd_t)
+
+ corenet_all_recvfrom_unlabeled(httpd_t)
+ corenet_all_recvfrom_netlabel(httpd_t)
+@@ -322,6 +372,7 @@
+ corenet_tcp_sendrecv_all_ports(httpd_t)
+ corenet_udp_sendrecv_all_ports(httpd_t)
+ corenet_tcp_bind_all_nodes(httpd_t)
++corenet_udp_bind_all_nodes(httpd_t)
+ corenet_tcp_bind_http_port(httpd_t)
+ corenet_tcp_bind_http_cache_port(httpd_t)
+ corenet_sendrecv_http_server_packets(httpd_t)
+@@ -335,12 +386,11 @@
+
+ fs_getattr_all_fs(httpd_t)
+ fs_search_auto_mountpoints(httpd_t)
++fs_list_inotifyfs(httpd_t)
+
+ auth_use_nsswitch(httpd_t)
+
+-# execute perl
+-corecmd_exec_bin(httpd_t)
+-corecmd_exec_shell(httpd_t)
++application_exec_all(httpd_t)
+
+ domain_use_interactive_fds(httpd_t)
+
+@@ -358,6 +408,10 @@
+ files_read_var_lib_symlinks(httpd_t)
+
+ fs_search_auto_mountpoints(httpd_sys_script_t)
++# php uploads a file to /tmp and then execs programs to acton them
++manage_dirs_pattern(httpd_sys_script_t, httpd_tmp_t, httpd_tmp_t)
++manage_files_pattern(httpd_sys_script_t, httpd_tmp_t, httpd_tmp_t)
++files_tmp_filetrans(httpd_sys_script_t, httpd_sys_content_rw_t, { dir file lnk_file sock_file fifo_file })
+
+ libs_read_lib_files(httpd_t)
+
+@@ -372,18 +426,33 @@
+
+ userdom_use_unpriv_users_fds(httpd_t)
+
+-mta_send_mail(httpd_t)
+-
+ tunable_policy(`allow_httpd_anon_write',`
+ miscfiles_manage_public_files(httpd_t)
+ ')
+
+-ifdef(`TODO', `
+ #
+ # We need optionals to be able to be within booleans to make this work
+ #
++##
++##
++## Allow Apache to use mod_auth_pam
++##
++##
++gen_tunable(allow_httpd_mod_auth_pam, false)
++
+ tunable_policy(`allow_httpd_mod_auth_pam',`
+- auth_domtrans_chk_passwd(httpd_t)
++ auth_domtrans_chkpwd(httpd_t)
++')
++
++##
++##
++## Allow Apache to use mod_auth_pam
++##
++##
++gen_tunable(allow_httpd_mod_auth_ntlm_winbind, false)
++optional_policy(`
++tunable_policy(`allow_httpd_mod_auth_pam',`
++ samba_domtrans_winbind_helper(httpd_t)
+ ')
+ ')
+
+@@ -391,20 +460,54 @@
+ corenet_tcp_connect_all_ports(httpd_t)
+ ')
+
++tunable_policy(`httpd_can_sendmail',`
++ # allow httpd to connect to mail servers
++ corenet_tcp_connect_smtp_port(httpd_t)
++ corenet_sendrecv_smtp_client_packets(httpd_t)
++ corenet_tcp_connect_pop_port(httpd_t)
++ corenet_sendrecv_pop_client_packets(httpd_t)
++ mta_send_mail(httpd_t)
++ mta_send_mail(httpd_sys_script_t)
++')
++
+ tunable_policy(`httpd_can_network_relay',`
+ # allow httpd to work as a relay
+ corenet_tcp_connect_gopher_port(httpd_t)
+ corenet_tcp_connect_ftp_port(httpd_t)
+ corenet_tcp_connect_http_port(httpd_t)
+ corenet_tcp_connect_http_cache_port(httpd_t)
++ corenet_tcp_connect_memcache_port(httpd_t)
+ corenet_sendrecv_gopher_client_packets(httpd_t)
+ corenet_sendrecv_ftp_client_packets(httpd_t)
+ corenet_sendrecv_http_client_packets(httpd_t)
+ corenet_sendrecv_http_cache_client_packets(httpd_t)
+ ')
+
++tunable_policy(`httpd_enable_cgi && httpd_unified',`
++ allow httpd_sys_script_t httpd_sys_content_t:file entrypoint;
++ filetrans_pattern(httpd_sys_script_t, httpd_sys_content_t, httpd_sys_content_rw_t, { file dir lnk_file })
++ can_exec(httpd_sys_script_t, httpd_sys_content_t)
++')
++
++tunable_policy(`allow_httpd_sys_script_anon_write',`
++ miscfiles_manage_public_files(httpd_sys_script_t)
++')
++
++tunable_policy(`httpd_enable_cgi && httpd_use_nfs',`
++ fs_nfs_domtrans(httpd_t, httpd_sys_script_t)
++')
++
++tunable_policy(`httpd_enable_cgi && httpd_use_cifs',`
++ fs_cifs_domtrans(httpd_t, httpd_sys_script_t)
++')
++
++
+ tunable_policy(`httpd_enable_cgi && httpd_unified && httpd_builtin_scripting',`
+- domtrans_pattern(httpd_t, httpdcontent, httpd_sys_script_t)
++ domtrans_pattern(httpd_t, httpd_sys_content_t, httpd_sys_script_t)
++ filetrans_pattern(httpd_t, httpd_sys_content_t, httpd_sys_content_rw_t, { file dir lnk_file })
++ manage_dirs_pattern(httpd_t, httpdcontent, httpd_sys_content_rw_t)
++ manage_files_pattern(httpd_t, httpdcontent, httpd_sys_content_rw_t)
++ manage_lnk_files_pattern(httpd_t, httpdcontent, httpd_sys_content_rw_t)
+
+ manage_dirs_pattern(httpd_t, httpdcontent, httpdcontent)
+ manage_files_pattern(httpd_t, httpdcontent, httpdcontent)
+@@ -415,20 +518,28 @@
+ corenet_tcp_bind_ftp_port(httpd_t)
+ ')
+
+-tunable_policy(`httpd_enable_homedirs',`
+- userdom_read_user_home_content_files(httpd_t)
+-')
+-
+ tunable_policy(`httpd_enable_homedirs && use_nfs_home_dirs',`
+ fs_read_nfs_files(httpd_t)
+ fs_read_nfs_symlinks(httpd_t)
+ ')
+
++tunable_policy(`httpd_use_nfs',`
++ fs_manage_nfs_dirs(httpd_t)
++ fs_manage_nfs_files(httpd_t)
++ fs_manage_nfs_symlinks(httpd_t)
++')
++
+ tunable_policy(`httpd_enable_homedirs && use_samba_home_dirs',`
+ fs_read_cifs_files(httpd_t)
+ fs_read_cifs_symlinks(httpd_t)
+ ')
+
++tunable_policy(`httpd_use_cifs',`
++ fs_manage_cifs_dirs(httpd_t)
++ fs_manage_cifs_files(httpd_t)
++ fs_manage_cifs_symlinks(httpd_t)
++')
++
+ tunable_policy(`httpd_ssi_exec',`
+ corecmd_shell_domtrans(httpd_t,httpd_sys_script_t)
+ allow httpd_sys_script_t httpd_t:fd use;
+@@ -459,8 +570,13 @@
+ ')
+
+ optional_policy(`
+- kerberos_use(httpd_t)
+- kerberos_read_kdc_config(httpd_t)
++ dbus_system_bus_client(httpd_t)
++ tunable_policy(`httpd_dbus_avahi',`
++ avahi_dbus_chat(httpd_t)
++ ')
++')
++optional_policy(`
++ kerberos_keytab_template(httpd, httpd_t)
+ ')
+
+ optional_policy(`
+@@ -472,18 +588,13 @@
+ ')
+
+ optional_policy(`
+- # Allow httpd to work with mysql
+ mysql_stream_connect(httpd_t)
+ mysql_rw_db_sockets(httpd_t)
+-
+- tunable_policy(`httpd_can_network_connect_db',`
+- mysql_tcp_connect(httpd_t)
+- ')
++ mysql_read_config(httpd_t)
+ ')
+
+ optional_policy(`
+ nagios_read_config(httpd_t)
+- nagios_domtrans_cgi(httpd_t)
+ ')
+
+ optional_policy(`
+@@ -493,6 +604,12 @@
+ openca_kill(httpd_t)
+ ')
+
++tunable_policy(`httpd_execmem',`
++ allow httpd_t self:process { execmem execstack };
++ allow httpd_sys_script_t self:process { execmem execstack };
++ allow httpd_suexec_t self:process { execmem execstack };
++')
++
+ optional_policy(`
+ # Allow httpd to work with postgresql
+ postgresql_stream_connect(httpd_t)
+@@ -500,6 +617,7 @@
+
+ tunable_policy(`httpd_can_network_connect_db',`
+ postgresql_tcp_connect(httpd_t)
++ postgresql_tcp_connect(httpd_sys_script_t)
+ ')
+ ')
+
+@@ -508,6 +626,7 @@
+ ')
+
+ optional_policy(`
++ files_dontaudit_rw_usr_dirs(httpd_t)
+ snmp_dontaudit_read_snmp_var_lib_files(httpd_t)
+ snmp_dontaudit_write_snmp_var_lib_files(httpd_t)
+ ')
+@@ -535,6 +654,22 @@
+
+ userdom_use_user_terminals(httpd_helper_t)
+
++tunable_policy(`httpd_tty_comm',`
++ userdom_use_user_terminals(httpd_helper_t)
++')
++
++optional_policy(`
++ type httpd_unconfined_script_t;
++ type httpd_unconfined_script_exec_t;
++ domain_type(httpd_unconfined_script_t)
++ domain_entry_file(httpd_unconfined_script_t, httpd_unconfined_script_exec_t)
++ domtrans_pattern(httpd_t, httpd_unconfined_script_exec_t, httpd_unconfined_script_t)
++ unconfined_domain(httpd_unconfined_script_t)
++
++ role system_r types httpd_unconfined_script_t;
++')
++
++
+ ########################################
+ #
+ # Apache PHP script local policy
+@@ -564,20 +699,25 @@
+
+ fs_search_auto_mountpoints(httpd_php_t)
+
++auth_use_nsswitch(httpd_php_t)
++
+ libs_exec_lib_files(httpd_php_t)
+
+ userdom_use_unpriv_users_fds(httpd_php_t)
+
+-optional_policy(`
+- mysql_stream_connect(httpd_php_t)
++tunable_policy(`httpd_can_network_connect_db',`
++ corenet_tcp_connect_mysqld_port(httpd_t)
++ corenet_sendrecv_mysqld_client_packets(httpd_t)
++ corenet_tcp_connect_mysqld_port(httpd_sys_script_t)
++ corenet_sendrecv_mysqld_client_packets(httpd_sys_script_t)
++ corenet_tcp_connect_mysqld_port(httpd_suexec_t)
++ corenet_sendrecv_mysqld_client_packets(httpd_suexec_t)
+ ')
+
+-optional_policy(`
+- nis_use_ypbind(httpd_php_t)
+-')
+
+ optional_policy(`
+- postgresql_stream_connect(httpd_php_t)
++ mysql_stream_connect(httpd_php_t)
++ mysql_read_config(httpd_php_t)
+ ')
+
+ ########################################
+@@ -595,12 +735,14 @@
+ append_files_pattern(httpd_suexec_t, httpd_log_t, httpd_log_t)
+ read_files_pattern(httpd_suexec_t, httpd_log_t, httpd_log_t)
+
+-allow httpd_suexec_t httpd_t:fifo_file getattr;
++allow httpd_suexec_t httpd_t:fifo_file read_fifo_file_perms;
+
+ manage_dirs_pattern(httpd_suexec_t, httpd_suexec_tmp_t, httpd_suexec_tmp_t)
+ manage_files_pattern(httpd_suexec_t, httpd_suexec_tmp_t, httpd_suexec_tmp_t)
+ files_tmp_filetrans(httpd_suexec_t, httpd_suexec_tmp_t, { file dir })
+
++can_exec(httpd_suexec_t, httpd_sys_script_exec_t)
++
+ kernel_read_kernel_sysctls(httpd_suexec_t)
+ kernel_list_proc(httpd_suexec_t)
+ kernel_read_proc_symlinks(httpd_suexec_t)
+@@ -609,9 +751,7 @@
+
+ fs_search_auto_mountpoints(httpd_suexec_t)
+
+-# for shell scripts
+-corecmd_exec_bin(httpd_suexec_t)
+-corecmd_exec_shell(httpd_suexec_t)
++application_exec_all(httpd_suexec_t)
+
+ files_read_etc_files(httpd_suexec_t)
+ files_read_usr_files(httpd_suexec_t)
+@@ -641,12 +781,25 @@
+ corenet_sendrecv_all_client_packets(httpd_suexec_t)
+ ')
+
++read_files_pattern(httpd_suexec_t, httpd_user_content_t, httpd_user_content_t)
++read_files_pattern(httpd_suexec_t, httpd_user_script_rw_t, httpd_user_script_rw_t)
++read_files_pattern(httpd_suexec_t, httpd_user_script_ro_t, httpd_user_script_ro_t)
++read_files_pattern(httpd_suexec_t, httpd_user_script_ra_t, httpd_user_script_ra_t)
++
++domain_entry_file(httpd_sys_script_t, httpd_sys_content_t)
+ tunable_policy(`httpd_enable_cgi && httpd_unified',`
+ domtrans_pattern(httpd_suexec_t, httpdcontent, httpd_sys_script_t)
++ domtrans_pattern(httpd_suexec_t, httpd_user_content_t, httpd_user_script_t)
++ domtrans_pattern(httpd_suexec_t, httpd_user_script_ro_t, httpd_user_script_t)
++ domtrans_pattern(httpd_suexec_t, httpd_user_script_ra_t, httpd_user_script_t)
++ domtrans_pattern(httpd_suexec_t, httpd_user_script_rw_t, httpd_user_script_t)
++
++ manage_dirs_pattern(httpd_sys_script_t, httpdcontent, httpdcontent)
++ manage_files_pattern(httpd_sys_script_t, httpdcontent, httpdcontent)
++ manage_lnk_files_pattern(httpd_sys_script_t, httpdcontent, httpdcontent)
+ ')
+-
+-tunable_policy(`httpd_enable_homedirs',`
+- userdom_read_user_home_content_files(httpd_suexec_t)
++tunable_policy(`httpd_enable_cgi',`
++ domtrans_pattern(httpd_suexec_t, httpd_user_script_t, httpd_user_script_t)
+ ')
+
+ tunable_policy(`httpd_enable_homedirs && use_nfs_home_dirs',`
+@@ -655,6 +808,12 @@
+ fs_exec_nfs_files(httpd_suexec_t)
+ ')
+
++tunable_policy(`httpd_use_cifs',`
++ fs_manage_cifs_files(httpd_suexec_t)
++ fs_manage_cifs_symlinks(httpd_suexec_t)
++ fs_exec_cifs_files(httpd_suexec_t)
++')
++
+ tunable_policy(`httpd_enable_homedirs && use_samba_home_dirs',`
+ fs_read_cifs_files(httpd_suexec_t)
+ fs_read_cifs_symlinks(httpd_suexec_t)
+@@ -672,15 +831,14 @@
+ dontaudit httpd_suexec_t httpd_t:unix_stream_socket { read write };
+ ')
+
+-optional_policy(`
+- nagios_domtrans_cgi(httpd_suexec_t)
+-')
+-
+ ########################################
+ #
+ # Apache system script local policy
+ #
+
++auth_use_nsswitch(httpd_sys_script_t)
++
++allow httpd_sys_script_t httpd_t:unix_stream_socket rw_stream_socket_perms;
+ allow httpd_sys_script_t httpd_t:tcp_socket { read write };
+
+ dontaudit httpd_sys_script_t httpd_config_t:dir search;
+@@ -699,12 +857,22 @@
+ # Should we add a boolean?
+ apache_domtrans_rotatelogs(httpd_sys_script_t)
+
++sysnet_read_config(httpd_sys_script_t)
++
+ ifdef(`distro_redhat',`
+ allow httpd_sys_script_t httpd_log_t:file append_file_perms;
+ ')
+
+-tunable_policy(`httpd_enable_homedirs',`
+- userdom_read_user_home_content_files(httpd_sys_script_t)
++tunable_policy(`httpd_use_nfs',`
++ fs_manage_nfs_dirs(httpd_sys_script_t)
++ fs_manage_nfs_files(httpd_sys_script_t)
++ fs_manage_nfs_symlinks(httpd_sys_script_t)
++')
++
++tunable_policy(`httpd_use_nfs',`
++ fs_manage_nfs_dirs(httpd_suexec_t)
++ fs_manage_nfs_files(httpd_suexec_t)
++ fs_manage_nfs_symlinks(httpd_suexec_t)
+ ')
+
+ tunable_policy(`httpd_enable_homedirs && use_nfs_home_dirs',`
+@@ -712,6 +880,35 @@
+ fs_read_nfs_symlinks(httpd_sys_script_t)
+ ')
+
++tunable_policy(`httpd_enable_cgi && httpd_can_network_connect',`
++ allow httpd_sys_script_t self:tcp_socket create_stream_socket_perms;
++ allow httpd_sys_script_t self:udp_socket create_socket_perms;
++
++ corenet_tcp_bind_all_nodes(httpd_sys_script_t)
++ corenet_udp_bind_all_nodes(httpd_sys_script_t)
++ corenet_all_recvfrom_unlabeled(httpd_sys_script_t)
++ corenet_all_recvfrom_netlabel(httpd_sys_script_t)
++ corenet_tcp_sendrecv_all_if(httpd_sys_script_t)
++ corenet_udp_sendrecv_all_if(httpd_sys_script_t)
++ corenet_tcp_sendrecv_all_nodes(httpd_sys_script_t)
++ corenet_udp_sendrecv_all_nodes(httpd_sys_script_t)
++ corenet_tcp_sendrecv_all_ports(httpd_sys_script_t)
++ corenet_udp_sendrecv_all_ports(httpd_sys_script_t)
++ corenet_tcp_connect_all_ports(httpd_sys_script_t)
++ corenet_sendrecv_all_client_packets(httpd_sys_script_t)
++')
++
++
++tunable_policy(`httpd_use_cifs',`
++ fs_manage_cifs_dirs(httpd_sys_script_t)
++ fs_manage_cifs_files(httpd_sys_script_t)
++ fs_manage_cifs_symlinks(httpd_sys_script_t)
++ fs_manage_cifs_dirs(httpd_suexec_t)
++ fs_manage_cifs_files(httpd_suexec_t)
++ fs_manage_cifs_symlinks(httpd_suexec_t)
++')
++
++
+ tunable_policy(`httpd_enable_homedirs && use_samba_home_dirs',`
+ fs_read_cifs_files(httpd_sys_script_t)
+ fs_read_cifs_symlinks(httpd_sys_script_t)
+@@ -724,10 +921,10 @@
+ optional_policy(`
+ mysql_stream_connect(httpd_sys_script_t)
+ mysql_rw_db_sockets(httpd_sys_script_t)
+-')
+-
+-optional_policy(`
+- postgresql_stream_connect(httpd_sys_script_t)
++ mysql_read_config(httpd_sys_script_t)
++ mysql_stream_connect(httpd_suexec_t)
++ mysql_rw_db_sockets(httpd_suexec_t)
++ mysql_read_config(httpd_suexec_t)
+ ')
+
+ ########################################
+@@ -735,6 +932,8 @@
+ # httpd_rotatelogs local policy
+ #
+
++allow httpd_rotatelogs_t self:capability dac_override;
++
+ manage_files_pattern(httpd_rotatelogs_t, httpd_log_t, httpd_log_t)
+
+ kernel_read_kernel_sysctls(httpd_rotatelogs_t)
+@@ -762,3 +961,66 @@
+ userdom_search_user_home_dirs(httpd_suexec_t)
+ userdom_search_user_home_dirs(httpd_user_script_t)
+ ')
++
++#============= bugzilla policy ==============
++apache_content_template(bugzilla)
++
++type httpd_bugzilla_tmp_t;
++files_tmp_file(httpd_bugzilla_tmp_t)
++
++allow httpd_bugzilla_script_t self:netlink_route_socket r_netlink_socket_perms;
++allow httpd_bugzilla_script_t self:tcp_socket create_stream_socket_perms;
++allow httpd_bugzilla_script_t self:udp_socket create_socket_perms;
++
++corenet_all_recvfrom_unlabeled(httpd_bugzilla_script_t)
++corenet_all_recvfrom_netlabel(httpd_bugzilla_script_t)
++corenet_tcp_sendrecv_all_if(httpd_bugzilla_script_t)
++corenet_udp_sendrecv_all_if(httpd_bugzilla_script_t)
++corenet_tcp_sendrecv_all_nodes(httpd_bugzilla_script_t)
++corenet_udp_sendrecv_all_nodes(httpd_bugzilla_script_t)
++corenet_tcp_sendrecv_all_ports(httpd_bugzilla_script_t)
++corenet_udp_sendrecv_all_ports(httpd_bugzilla_script_t)
++corenet_tcp_connect_postgresql_port(httpd_bugzilla_script_t)
++corenet_tcp_connect_mysqld_port(httpd_bugzilla_script_t)
++corenet_tcp_connect_http_port(httpd_bugzilla_script_t)
++corenet_tcp_connect_smtp_port(httpd_bugzilla_script_t)
++corenet_sendrecv_postgresql_client_packets(httpd_bugzilla_script_t)
++corenet_sendrecv_mysqld_client_packets(httpd_bugzilla_script_t)
++
++manage_dirs_pattern(httpd_bugzilla_script_t, httpd_bugzilla_tmp_t, httpd_bugzilla_tmp_t)
++manage_files_pattern(httpd_bugzilla_script_t, httpd_bugzilla_tmp_t, httpd_bugzilla_tmp_t)
++files_tmp_filetrans(httpd_bugzilla_script_t, httpd_bugzilla_tmp_t, { file dir })
++
++files_search_var_lib(httpd_bugzilla_script_t)
++
++mta_send_mail(httpd_bugzilla_script_t)
++
++sysnet_read_config(httpd_bugzilla_script_t)
++sysnet_use_ldap(httpd_bugzilla_script_t)
++
++optional_policy(`
++ mysql_search_db(httpd_bugzilla_script_t)
++ mysql_stream_connect(httpd_bugzilla_script_t)
++')
++
++optional_policy(`
++ postgresql_stream_connect(httpd_bugzilla_script_t)
++')
++
++manage_dirs_pattern(httpd_sys_script_t,httpdcontent,httpd_rw_content)
++manage_files_pattern(httpd_sys_script_t,httpdcontent,httpd_rw_content)
++manage_lnk_files_pattern(httpd_sys_script_t,httpdcontent,httpd_rw_content)
++
++manage_dirs_pattern(httpd_t,httpdcontent,httpd_rw_content)
++manage_files_pattern(httpd_t,httpdcontent,httpd_rw_content)
++manage_lnk_files_pattern(httpd_t,httpdcontent,httpd_rw_content)
++
++# Removal of fastcgi, will cause problems without the following
++typealias httpd_sys_script_exec_t alias httpd_fastcgi_script_exec_t;
++typealias httpd_sys_content_t alias httpd_fastcgi_content_t;
++typealias httpd_sys_content_rw_t alias httpd_fastcgi_content_rw_t;
++typealias httpd_sys_script_ra_t alias httpd_fastcgi_script_ra_t;
++typealias httpd_sys_script_ro_t alias httpd_fastcgi_script_ro_t;
++typealias httpd_sys_script_rw_t alias httpd_fastcgi_script_rw_t;
++typealias httpd_sys_script_t alias httpd_fastcgi_script_t;
++typealias httpd_var_run_t alias httpd_fastcgi_var_run_t;
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/automount.te serefpolicy-3.6.1/policy/modules/services/automount.te
+--- nsaserefpolicy/policy/modules/services/automount.te 2008-11-11 16:13:45.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/automount.te 2008-11-25 09:45:43.000000000 -0500
+@@ -71,6 +71,7 @@
+ files_mounton_all_mountpoints(automount_t)
+ files_mount_all_file_type_fs(automount_t)
+ files_unmount_all_file_type_fs(automount_t)
++files_manage_non_security_dirs(automount_t)
+
+ fs_mount_all_fs(automount_t)
+ fs_unmount_all_fs(automount_t)
+@@ -100,6 +101,7 @@
+ corenet_udp_bind_all_rpc_ports(automount_t)
+
+ dev_read_sysfs(automount_t)
++dev_rw_autofs(automount_t)
+ # for SSP
+ dev_read_rand(automount_t)
+ dev_read_urand(automount_t)
+@@ -127,6 +129,7 @@
+ fs_unmount_autofs(automount_t)
+ fs_mount_autofs(automount_t)
+ fs_manage_autofs_symlinks(automount_t)
++fs_read_nfs_files(automount_t)
+
+ storage_rw_fuse(automount_t)
+
+@@ -155,7 +158,7 @@
+ ')
+
+ optional_policy(`
+- kerberos_read_keytab(automount_t)
++ kerberos_keytab_template(automount, automount_t)
+ kerberos_read_config(automount_t)
+ kerberos_dontaudit_write_config(automount_t)
+ ')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/avahi.if serefpolicy-3.6.1/policy/modules/services/avahi.if
+--- nsaserefpolicy/policy/modules/services/avahi.if 2008-11-19 11:51:44.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/avahi.if 2008-11-25 09:45:43.000000000 -0500
+@@ -21,6 +21,25 @@
+
+ ########################################
+ ##
++## Execute avahi server in the avahi domain.
++##
++##
++##
++## The type of the process performing this action.
++##
++##
++#
++#
++interface(`avahi_initrc_domtrans',`
++ gen_require(`
++ type avahi_initrc_exec_t;
++ ')
++
++ init_labeled_script_domtrans($1, avahi_initrc_exec_t)
++')
++
++########################################
++##
+ ## Send avahi a signal
+ ##
+ ##
+@@ -57,6 +76,24 @@
+
+ ########################################
+ ##
++## Send avahi a signull
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`avahi_signull',`
++ gen_require(`
++ type avahi_t;
++ ')
++
++ allow $1 avahi_t:process signull;
++')
++
++########################################
++##
+ ## Send and receive messages from
+ ## avahi over dbus.
+ ##
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/avahi.te serefpolicy-3.6.1/policy/modules/services/avahi.te
+--- nsaserefpolicy/policy/modules/services/avahi.te 2008-11-19 11:51:44.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/avahi.te 2008-11-25 09:45:43.000000000 -0500
+@@ -33,6 +33,7 @@
+ allow avahi_t self:tcp_socket create_stream_socket_perms;
+ allow avahi_t self:udp_socket create_socket_perms;
+
++files_search_var_lib(avahi_t)
+ manage_dirs_pattern(avahi_t, avahi_var_lib_t, avahi_var_lib_t)
+ manage_files_pattern(avahi_t, avahi_var_lib_t, avahi_var_lib_t)
+ files_var_lib_filetrans(avahi_t, avahi_var_lib_t, { dir file })
+@@ -93,6 +94,7 @@
+ dbus_connect_system_bus(avahi_t)
+
+ init_dbus_chat_script(avahi_t)
++ dbus_system_domain(avahi_t, avahi_exec_t)
+ ')
+
+ optional_policy(`
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/bind.if serefpolicy-3.6.1/policy/modules/services/bind.if
+--- nsaserefpolicy/policy/modules/services/bind.if 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/bind.if 2008-11-25 09:45:43.000000000 -0500
+@@ -38,6 +38,42 @@
+
+ ########################################
+ ##
++## Send signulls to BIND.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`bind_signull',`
++ gen_require(`
++ type named_t;
++ ')
++
++ allow $1 named_t:process signull;
++')
++
++########################################
++##
++## Send BIND the kill signal
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`bind_kill',`
++ gen_require(`
++ type named_t;
++ ')
++
++ allow $1 named_t:process sigkill;
++')
++
++########################################
++##
+ ## Execute ndc in the ndc domain, and
+ ## allow the specified role the ndc domain.
+ ##
+@@ -251,6 +287,25 @@
+
+ ########################################
+ ##
++## Execute bind server in the bind domain.
++##
++##
++##
++## The type of the process performing this action.
++##
++##
++#
++#
++interface(`bind_initrc_domtrans',`
++ gen_require(`
++ type bind_initrc_exec_t;
++ ')
++
++ init_labeled_script_domtrans($1, bind_initrc_exec_t)
++')
++
++########################################
++##
+ ## All of the rules required to administrate
+ ## an bind environment
+ ##
+@@ -269,7 +324,7 @@
+ interface(`bind_admin',`
+ gen_require(`
+ type named_t, named_tmp_t, named_log_t;
+- type named_conf_t, named_var_run_t;
++ type named_conf_t, named_var_lib_t, named_var_run_t;
+ type named_cache_t, named_zone_t;
+ type dnssec_t, ndc_t;
+ type named_initrc_exec_t;
+@@ -283,6 +338,7 @@
+
+ bind_run_ndc($1, $2)
+
++ bind_initrc_domtrans($1)
+ domain_system_change_exemption($1)
+ role_transition $2 named_initrc_exec_t system_r;
+ allow $2 system_r;
+@@ -300,6 +356,9 @@
+ admin_pattern($1, named_zone_t)
+ admin_pattern($1, dnssec_t)
+
++ files_list_var_lib($1)
++ admin_pattern($1, named_var_lib_t)
++
+ files_list_pids($1)
+ admin_pattern($1, named_var_run_t)
+ ')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/bind.te serefpolicy-3.6.1/policy/modules/services/bind.te
+--- nsaserefpolicy/policy/modules/services/bind.te 2008-11-11 16:13:45.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/bind.te 2008-11-25 09:45:43.000000000 -0500
+@@ -169,7 +169,7 @@
+ ')
+
+ optional_policy(`
+- kerberos_use(named_t)
++ kerberos_keytab_template(named, named_t)
+ ')
+
+ optional_policy(`
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/bluetooth.fc serefpolicy-3.6.1/policy/modules/services/bluetooth.fc
+--- nsaserefpolicy/policy/modules/services/bluetooth.fc 2008-11-19 11:51:44.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/bluetooth.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -15,6 +15,7 @@
+ /usr/bin/hidd -- gen_context(system_u:object_r:bluetooth_exec_t,s0)
+ /usr/bin/rfcomm -- gen_context(system_u:object_r:bluetooth_exec_t,s0)
+
++/usr/sbin/bluetoothd -- gen_context(system_u:object_r:bluetooth_exec_t,s0)
+ /usr/sbin/hciattach -- gen_context(system_u:object_r:bluetooth_exec_t,s0)
+ /usr/sbin/hcid -- gen_context(system_u:object_r:bluetooth_exec_t,s0)
+ /usr/sbin/hid2hci -- gen_context(system_u:object_r:bluetooth_exec_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/bluetooth.if serefpolicy-3.6.1/policy/modules/services/bluetooth.if
+--- nsaserefpolicy/policy/modules/services/bluetooth.if 2008-11-19 11:51:44.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/bluetooth.if 2008-11-25 09:45:43.000000000 -0500
+@@ -173,7 +173,7 @@
+ interface(`bluetooth_admin',`
+ gen_require(`
+ type bluetooth_t, bluetooth_tmp_t, bluetooth_lock_t;
+- type bluetooth_var_lib_t, bluetooth_var_run_t;
++ type bluetooth_spool_t, bluetooth_var_lib_t, bluetooth_var_run_t;
+ type bluetooth_conf_t, bluetooth_conf_rw_t;
+ type bluetooth_initrc_exec_t;
+ ')
+@@ -196,6 +196,9 @@
+ admin_pattern($1, bluetooth_conf_t)
+ admin_pattern($1, bluetooth_conf_rw_t)
+
++ files_list_spool($1)
++ admin_pattern($1, bluetooth_spool_t)
++
+ files_list_var_lib($1)
+ admin_pattern($1, bluetooth_var_lib_t)
+
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/bluetooth.te serefpolicy-3.6.1/policy/modules/services/bluetooth.te
+--- nsaserefpolicy/policy/modules/services/bluetooth.te 2008-11-19 11:51:44.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/bluetooth.te 2008-11-25 09:45:43.000000000 -0500
+@@ -147,10 +147,10 @@
+ optional_policy(`
+ cups_dbus_chat(bluetooth_t)
+ ')
+-')
+
+ optional_policy(`
+- nis_use_ypbind(bluetooth_t)
++ hal_dbus_chat(bluetooth_t)
++ ')
+ ')
+
+ optional_policy(`
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/certmaster.fc serefpolicy-3.6.1/policy/modules/services/certmaster.fc
+--- nsaserefpolicy/policy/modules/services/certmaster.fc 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/certmaster.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,9 @@
++
++/etc/rc\.d/init\.d/certmaster -- gen_context(system_u:object_r:certmaster_initrc_exec_t,s0)
++/usr/bin/certmaster -- gen_context(system_u:object_r:certmaster_exec_t,s0)
++
++/etc/certmaster(/.*)? gen_context(system_u:object_r:certmaster_etc_rw_t,s0)
++
++/var/run/certmaster.* gen_context(system_u:object_r:certmaster_var_run_t,s0)
++
++/var/log/certmaster(/.*)? gen_context(system_u:object_r:certmaster_var_log_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/certmaster.if serefpolicy-3.6.1/policy/modules/services/certmaster.if
+--- nsaserefpolicy/policy/modules/services/certmaster.if 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/certmaster.if 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,123 @@
++## policy for certmaster
++
++########################################
++##
++## Execute a domain transition to run certmaster.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`certmaster_domtrans',`
++ gen_require(`
++ type certmaster_t, certmaster_exec_t;
++ ')
++
++ domtrans_pattern($1,certmaster_exec_t,certmaster_t)
++')
++
++#######################################
++##
++## read certmaster logs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`certmaster_read_log',`
++ gen_require(`
++ type certmaster_var_log_t;
++ ')
++
++ read_files_pattern($1, certmaster_var_log_t, certmaster_var_log_t)
++')
++
++#######################################
++##
++## Append to certmaster logs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`certmaster_append_log',`
++ gen_require(`
++ type certmaster_var_log_t;
++ ')
++
++ append_files_pattern($1, certmaster_var_log_t, certmaster_var_log_t)
++')
++
++#######################################
++##
++## Create, read, write, and delete
++## certmaster logs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`certmaster_manage_log',`
++ gen_require(`
++ type certmaster_var_log_t;
++ ')
++
++ manage_files_pattern($1, certmaster_var_log_t, certmaster_var_log_t)
++ manage_lnk_files_pattern($1, certmaster_var_log_t, certmaster_var_log_t)
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an snort environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## The role to be allowed to manage the syslog domain.
++##
++##
++##
++#
++interface(`certmaster_admin',`
++ gen_require(`
++ type certmaster_t, certmaster_var_run_t, certmaster_var_lib_t;
++ type certmaster_etc_rw_t, certmaster_var_log_t;
++ type certmaster_initrc_exec_t;
++ ')
++
++ allow $1 certmaster_t:process { ptrace signal_perms };
++ ps_process_pattern($1, certmaster_t)
++
++ init_labeled_script_domtrans($1, certmaster_initrc_exec_t)
++ domain_system_change_exemption($1)
++ role_transition $2 certmaster_initrc_exec_t system_r;
++ allow $2 system_r;
++
++ files_list_etc($1)
++ miscfiles_manage_cert_dirs($1)
++ miscfiles_manage_cert_files($1)
++
++ admin_pattern($1, certmaster_etc_rw_t)
++
++ files_list_pids($1)
++ admin_pattern($1, certmaster_var_run_t)
++
++ logging_list_logs($1)
++ admin_pattern($1, certmaster_var_log_t)
++
++ files_list_var_lib($1)
++ admin_pattern($1, certmaster_var_lib_t)
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/certmaster.te serefpolicy-3.6.1/policy/modules/services/certmaster.te
+--- nsaserefpolicy/policy/modules/services/certmaster.te 1969-12-31 19:00:00.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/certmaster.te 2008-11-25 09:45:43.000000000 -0500
+@@ -0,0 +1,79 @@
++policy_module(certmaster,1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++# type and domain for certmaster
++type certmaster_t;
++type certmaster_exec_t;
++init_daemon_domain(certmaster_t, certmaster_exec_t)
++
++type certmaster_initrc_exec_t;
++init_script_file(certmaster_initrc_exec_t)
++
++# var/lib files
++type certmaster_var_lib_t;
++files_type(certmaster_var_lib_t)
++
++# config files
++type certmaster_etc_rw_t;
++files_config_file(certmaster_etc_rw_t)
++
++# log files
++type certmaster_var_log_t;
++logging_log_file(certmaster_var_log_t)
++
++# pid files
++type certmaster_var_run_t;
++files_pid_file(certmaster_var_run_t)
++
++###########################################
++#
++# certmaster local policy
++#
++
++allow certmaster_t self:capability sys_tty_config;
++allow certmaster_t self:tcp_socket create_stream_socket_perms;
++
++# config files
++list_dirs_pattern(certmaster_t,certmaster_etc_rw_t,certmaster_etc_rw_t)
++manage_files_pattern(certmaster_t, certmaster_etc_rw_t, certmaster_etc_rw_t)
++
++# var/lib files for certmaster
++manage_files_pattern(certmaster_t,certmaster_var_lib_t,certmaster_var_lib_t)
++manage_dirs_pattern(certmaster_t,certmaster_var_lib_t,certmaster_var_lib_t)
++files_var_lib_filetrans(certmaster_t,certmaster_var_lib_t, { file dir })
++
++# log files
++manage_files_pattern(certmaster_t, certmaster_var_log_t, certmaster_var_log_t)
++logging_log_filetrans(certmaster_t,certmaster_var_log_t, file )
++
++# pid file
++manage_files_pattern(certmaster_t, certmaster_var_run_t,certmaster_var_run_t)
++manage_sock_files_pattern(certmaster_t, certmaster_var_run_t,certmaster_var_run_t)
++files_pid_filetrans(certmaster_t,certmaster_var_run_t, { file sock_file })
++
++corecmd_search_bin(certmaster_t)
++corecmd_getattr_bin_files(certmaster_t)
++
++# network
++corenet_tcp_bind_inaddr_any_node(certmaster_t)
++corenet_tcp_bind_certmaster_port(certmaster_t)
++
++files_search_etc(certmaster_t)
++files_list_var(certmaster_t)
++files_search_var_lib(certmaster_t)
++
++# read meminfo
++kernel_read_system_state(certmaster_t)
++
++auth_use_nsswitch(certmaster_t)
++
++miscfiles_read_localization(certmaster_t)
++
++miscfiles_manage_cert_dirs(certmaster_t)
++miscfiles_manage_cert_files(certmaster_t)
++
++permissive certmaster_t;
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/clamav.fc serefpolicy-3.6.1/policy/modules/services/clamav.fc
+--- nsaserefpolicy/policy/modules/services/clamav.fc 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/clamav.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -1,20 +1,22 @@
+ /etc/clamav(/.*)? gen_context(system_u:object_r:clamd_etc_t,s0)
++/etc/rc\.d/init\.d/clamd-wrapper -- gen_context(system_u:object_r:clamd_initrc_exec_t,s0)
+
+ /usr/bin/clamscan -- gen_context(system_u:object_r:clamscan_exec_t,s0)
+ /usr/bin/clamdscan -- gen_context(system_u:object_r:clamscan_exec_t,s0)
+ /usr/bin/freshclam -- gen_context(system_u:object_r:freshclam_exec_t,s0)
+
+ /usr/sbin/clamd -- gen_context(system_u:object_r:clamd_exec_t,s0)
++/usr/sbin/clamav-milter -- gen_context(system_u:object_r:clamd_exec_t,s0)
+
+ /var/run/amavis(d)?/clamd\.pid -- gen_context(system_u:object_r:clamd_var_run_t,s0)
+-/var/run/clamav(/.*)? gen_context(system_u:object_r:clamd_var_run_t,s0)
+-/var/run/clamd\..* gen_context(system_u:object_r:clamd_var_run_t,s0)
+-/var/run/clamav\..* gen_context(system_u:object_r:clamd_var_run_t,s0)
++/var/run/clamav.* gen_context(system_u:object_r:clamd_var_run_t,s0)
++/var/run/clamd.* gen_context(system_u:object_r:clamd_var_run_t,s0)
+
+ /var/lib/clamav(/.*)? gen_context(system_u:object_r:clamd_var_lib_t,s0)
++/var/clamav(/.*)? gen_context(system_u:object_r:clamd_var_lib_t,s0)
+
+-/var/log/clamav -d gen_context(system_u:object_r:clamd_var_log_t,s0)
+-/var/log/clamav/clamav.* -- gen_context(system_u:object_r:clamd_var_log_t,s0)
++/var/log/clamav.* gen_context(system_u:object_r:clamd_var_log_t,s0)
+ /var/log/clamav/freshclam.* -- gen_context(system_u:object_r:freshclam_var_log_t,s0)
++/var/log/clamd.* gen_context(system_u:object_r:clamd_var_log_t,s0)
+
+ /var/spool/amavisd/clamd\.sock -s gen_context(system_u:object_r:clamd_var_run_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/clamav.if serefpolicy-3.6.1/policy/modules/services/clamav.if
+--- nsaserefpolicy/policy/modules/services/clamav.if 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/clamav.if 2008-11-25 09:45:43.000000000 -0500
+@@ -38,6 +38,27 @@
+
+ ########################################
+ ##
++## Allow the specified domain to append
++## to clamav log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`clamav_append_log',`
++ gen_require(`
++ type clamav_log_t;
++ ')
++
++ logging_search_logs($1)
++ allow $1 clamav_log_t:dir list_dir_perms;
++ append_files_pattern($1, clamav_log_t, clamav_log_t)
++')
++
++########################################
++##
+ ## Read clamav configuration files.
+ ##
+ ##
+@@ -91,3 +112,87 @@
+
+ domtrans_pattern($1, clamscan_exec_t, clamscan_t)
+ ')
++
++########################################
++##
++## Execute clamscan without a transition.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`clamav_exec_clamscan',`
++ gen_require(`
++ type clamscan_exec_t;
++ ')
++
++ can_exec($1, clamscan_exec_t)
++
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an clamav environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## The role to be allowed to manage the clamav domain.
++##
++##
++##
++#
++interface(`clamav_admin',`
++ gen_require(`
++ type clamd_t, clamd_etc_t, clamd_tmp_t;
++ type clamd_var_log_t, clamd_var_lib_t;
++ type clamd_var_run_t;
++
++ type clamscan_t, clamscan_tmp_t;
++
++ type freshclam_t, freshclam_var_log_t;
++
++ type clamd_initrc_exec_t;
++ ')
++
++ allow $1 clamd_t:process { ptrace signal_perms };
++ ps_process_pattern($1, clamd_t)
++
++ allow $1 clamscan_t:process { ptrace signal_perms };
++ ps_process_pattern($1, clamscan_t)
++
++ allow $1 freshclam_t:process { ptrace signal_perms };
++ ps_process_pattern($1, freshclam_t)
++
++ init_labeled_script_domtrans($1, clamd_initrc_exec_t)
++ domain_system_change_exemption($1)
++ role_transition $2 clamd_initrc_exec_t system_r;
++ allow $2 system_r;
++
++ files_list_tmp($1)
++ admin_pattern($1, clamd_tmp_t)
++
++ files_list_etc($1)
++ admin_pattern($1, clamd_etc_t)
++
++ logging_list_logs($1)
++ admin_pattern($1, clamd_var_log_t)
++
++ files_list_var_lib($1)
++ admin_pattern($1, clamd_var_lib_t)
++
++ files_list_pids($1)
++ admin_pattern($1, clamd_var_run_t)
++
++ admin_pattern($1, clamscan_tmp_t)
++
++ admin_pattern($1, freshclam_var_log_t)
++')
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/clamav.te serefpolicy-3.6.1/policy/modules/services/clamav.te
+--- nsaserefpolicy/policy/modules/services/clamav.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/clamav.te 2008-11-25 09:45:43.000000000 -0500
+@@ -13,7 +13,10 @@
+
+ # configuration files
+ type clamd_etc_t;
+-files_type(clamd_etc_t)
++files_config_file(clamd_etc_t)
++
++type clamd_initrc_exec_t;
++init_script_file(clamd_initrc_exec_t)
+
+ # tmp files
+ type clamd_tmp_t;
+@@ -87,6 +90,9 @@
+ kernel_dontaudit_list_proc(clamd_t)
+ kernel_read_sysctl(clamd_t)
+ kernel_read_kernel_sysctls(clamd_t)
++kernel_read_system_state(clamd_t)
++
++corecmd_exec_shell(clamd_t)
+
+ corenet_all_recvfrom_unlabeled(clamd_t)
+ corenet_all_recvfrom_netlabel(clamd_t)
+@@ -97,6 +103,8 @@
+ corenet_tcp_bind_all_nodes(clamd_t)
+ corenet_tcp_bind_clamd_port(clamd_t)
+ corenet_sendrecv_clamd_server_packets(clamd_t)
++corenet_tcp_bind_generic_port(clamd_t)
++corenet_tcp_connect_generic_port(clamd_t)
+
+ dev_read_rand(clamd_t)
+ dev_read_urand(clamd_t)
+@@ -117,6 +125,9 @@
+ cron_use_system_job_fds(clamd_t)
+ cron_rw_pipes(clamd_t)
+
++mta_read_config(clamd_t)
++mta_send_mail(clamd_t)
++
+ optional_policy(`
+ amavis_read_lib_files(clamd_t)
+ amavis_read_spool_files(clamd_t)
+@@ -124,6 +135,10 @@
+ amavis_create_pid_files(clamd_t)
+ ')
+
++optional_policy(`
++ exim_read_spool_files(clamd_t)
++')
++
+ ########################################
+ #
+ # Freshclam local policy
+@@ -191,7 +206,7 @@
+ allow clamscan_t self:fifo_file rw_file_perms;
+ allow clamscan_t self:unix_stream_socket create_stream_socket_perms;
+ allow clamscan_t self:unix_dgram_socket create_socket_perms;
+-allow clamscan_t self:tcp_socket { listen accept };
++allow clamscan_t self:tcp_socket create_stream_socket_perms;
+
+ # configuration files
+ allow clamscan_t clamd_etc_t:dir list_dir_perms;
+@@ -207,6 +222,14 @@
+ manage_files_pattern(clamscan_t, clamd_var_lib_t, clamd_var_lib_t)
+ allow clamscan_t clamd_var_lib_t:dir list_dir_perms;
+
++corenet_all_recvfrom_unlabeled(clamscan_t)
++corenet_all_recvfrom_netlabel(clamscan_t)
++corenet_tcp_sendrecv_all_if(clamscan_t)
++corenet_tcp_sendrecv_all_nodes(clamscan_t)
++corenet_tcp_sendrecv_all_ports(clamscan_t)
++corenet_tcp_sendrecv_clamd_port(clamscan_t)
++corenet_tcp_connect_clamd_port(clamscan_t)
++
+ kernel_read_kernel_sysctls(clamscan_t)
+
+ files_read_etc_files(clamscan_t)
+@@ -221,6 +244,12 @@
+
+ clamav_stream_connect(clamscan_t)
+
++mta_send_mail(clamscan_t)
++
+ optional_policy(`
+ apache_read_sys_content(clamscan_t)
+ ')
++
++optional_policy(`
++ mailscanner_manage_spool(clamscan_t)
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/consolekit.fc serefpolicy-3.6.1/policy/modules/services/consolekit.fc
+--- nsaserefpolicy/policy/modules/services/consolekit.fc 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/consolekit.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -1,3 +1,6 @@
+ /usr/sbin/console-kit-daemon -- gen_context(system_u:object_r:consolekit_exec_t,s0)
+
+ /var/run/consolekit\.pid -- gen_context(system_u:object_r:consolekit_var_run_t,s0)
++/var/run/ConsoleKit(/.*)? -- gen_context(system_u:object_r:consolekit_var_run_t,s0)
++
++/var/log/ConsoleKit(/.*)? gen_context(system_u:object_r:consolekit_log_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/consolekit.if serefpolicy-3.6.1/policy/modules/services/consolekit.if
+--- nsaserefpolicy/policy/modules/services/consolekit.if 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/consolekit.if 2008-11-25 09:45:43.000000000 -0500
+@@ -38,3 +38,24 @@
+ allow $1 consolekit_t:dbus send_msg;
+ allow consolekit_t $1:dbus send_msg;
+ ')
++
++########################################
++##
++## Read consolekit log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`consolekit_read_log',`
++ gen_require(`
++ type consolekit_log_t;
++ ')
++
++ files_search_pids($1)
++ read_files_pattern($1, consolekit_log_t, consolekit_log_t)
++')
++
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/consolekit.te serefpolicy-3.6.1/policy/modules/services/consolekit.te
+--- nsaserefpolicy/policy/modules/services/consolekit.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/consolekit.te 2008-12-01 14:27:59.000000000 -0500
+@@ -13,6 +13,9 @@
+ type consolekit_var_run_t;
+ files_pid_file(consolekit_var_run_t)
+
++type consolekit_log_t;
++files_pid_file(consolekit_log_t)
++
+ ########################################
+ #
+ # consolekit local policy
+@@ -24,20 +27,27 @@
+ allow consolekit_t self:unix_stream_socket create_stream_socket_perms;
+ allow consolekit_t self:unix_dgram_socket create_socket_perms;
+
++manage_files_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
++logging_log_filetrans(consolekit_t, consolekit_log_t, file)
++
++manage_dirs_pattern(consolekit_t, consolekit_var_run_t, consolekit_var_run_t)
+ manage_files_pattern(consolekit_t, consolekit_var_run_t, consolekit_var_run_t)
+-files_pid_filetrans(consolekit_t, consolekit_var_run_t, file)
++files_pid_filetrans(consolekit_t, consolekit_var_run_t, { file dir })
+
+ kernel_read_system_state(consolekit_t)
+
+ corecmd_exec_bin(consolekit_t)
++corecmd_exec_shell(consolekit_t)
+
+ dev_read_urand(consolekit_t)
+ dev_read_sysfs(consolekit_t)
+
+ domain_read_all_domains_state(consolekit_t)
+ domain_use_interactive_fds(consolekit_t)
++domain_dontaudit_ptrace_all_domains(consolekit_t)
+
+ files_read_etc_files(consolekit_t)
++files_read_usr_files(consolekit_t)
+ # needs to read /var/lib/dbus/machine-id
+ files_read_var_lib_files(consolekit_t)
+
+@@ -47,13 +57,35 @@
+
+ auth_use_nsswitch(consolekit_t)
+
++init_telinit(consolekit_t)
++init_rw_utmp(consolekit_t)
++init_chat(consolekit_t)
++
++logging_send_syslog_msg(consolekit_t)
++
+ miscfiles_read_localization(consolekit_t)
+
++# consolekit needs to be able to ptrace all logged in users
++userdom_ptrace_all_users(consolekit_t)
++userdom_dontaudit_read_user_home_content_files(consolekit_t)
++userdom_read_user_tmp_files(consolekit_t)
++
++hal_ptrace(consolekit_t)
++mcs_ptrace_all(consolekit_t)
++
+ optional_policy(`
+- dbus_system_bus_client(consolekit_t)
+- dbus_connect_system_bus(consolekit_t)
++ cron_read_system_job_lib_files(consolekit_t)
++')
+
++optional_policy(`
++ dbus_system_domain(consolekit_t, consolekit_exec_t)
++ optional_policy(`
+ hal_dbus_chat(consolekit_t)
++ ')
++
++ optional_policy(`
++ rpm_dbus_chat(consolekit_t)
++ ')
+
+ optional_policy(`
+ unconfined_dbus_chat(consolekit_t)
+@@ -61,6 +93,29 @@
+ ')
+
+ optional_policy(`
++ polkit_domtrans_auth(consolekit_t)
++ polkit_read_lib(consolekit_t)
++')
++
++optional_policy(`
+ xserver_read_user_xauth(consolekit_t)
+ xserver_stream_connect(consolekit_t)
++ xserver_ptrace_xdm(consolekit_t)
++')
++
++optional_policy(`
++ #reading .Xauthity
++ unconfined_ptrace(consolekit_t)
++ unconfined_stream_connect(consolekit_t)
++')
++
++tunable_policy(`use_nfs_home_dirs',`
++ fs_dontaudit_list_nfs(consolekit_t)
++ fs_dontaudit_rw_nfs_files(consolekit_t)
+ ')
++
++tunable_policy(`use_samba_home_dirs',`
++ fs_dontaudit_list_cifs(consolekit_t)
++ fs_dontaudit_rw_cifs_files(consolekit_t)
++')
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/courier.te serefpolicy-3.6.1/policy/modules/services/courier.te
+--- nsaserefpolicy/policy/modules/services/courier.te 2008-11-18 18:57:20.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/courier.te 2008-11-25 09:45:43.000000000 -0500
+@@ -10,6 +10,7 @@
+
+ type courier_etc_t;
+ files_config_file(courier_etc_t)
++mta_system_content(courier_etc_t)
+
+ courier_domain_template(pcp)
+
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cron.fc serefpolicy-3.6.1/policy/modules/services/cron.fc
+--- nsaserefpolicy/policy/modules/services/cron.fc 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/cron.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -17,6 +17,8 @@
+ /var/run/fcron\.fifo -s gen_context(system_u:object_r:crond_var_run_t,s0)
+ /var/run/fcron\.pid -- gen_context(system_u:object_r:crond_var_run_t,s0)
+
++/var/spool/anacron(/.*)? gen_context(system_u:object_r:system_cron_spool_t,s0)
++
+ /var/spool/at -d gen_context(system_u:object_r:cron_spool_t,s0)
+ /var/spool/at/spool -d gen_context(system_u:object_r:cron_spool_t,s0)
+ /var/spool/at/[^/]* -- <>
+@@ -41,7 +43,12 @@
+ #/var/spool/cron/crontabs/root -- gen_context(system_u:object_r:sysadm_cron_spool_t,s0)
+
+ /var/spool/fcron -d gen_context(system_u:object_r:cron_spool_t,s0)
+-/var/spool/fcron/[^/]* <>
++/var/spool/fcron/.* <>
+ /var/spool/fcron/systab\.orig -- gen_context(system_u:object_r:system_cron_spool_t,s0)
+ /var/spool/fcron/systab -- gen_context(system_u:object_r:system_cron_spool_t,s0)
+ /var/spool/fcron/new\.systab -- gen_context(system_u:object_r:system_cron_spool_t,s0)
++/var/lib/misc(/.*)? gen_context(system_u:object_r:system_cronjob_var_lib_t,s0)
++
++/var/lib/glpi/files(/.*)? gen_context(system_u:object_r:cron_var_lib_t,s0)
++
++/var/log/rpmpkgs.* -- gen_context(system_u:object_r:cron_log_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cron.if serefpolicy-3.6.1/policy/modules/services/cron.if
+--- nsaserefpolicy/policy/modules/services/cron.if 2008-11-11 16:13:47.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/cron.if 2008-11-25 09:45:43.000000000 -0500
+@@ -343,6 +343,24 @@
+
+ ########################################
+ ##
++## Allow read/write unix stream sockets from the system cron jobs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`cron_rw_system_stream_sockets',`
++ gen_require(`
++ type system_cronjob_t;
++ ')
++
++ allow $1 system_cronjob_t:unix_stream_socket { read write };
++')
++
++########################################
++##
+ ## Read and write a cron daemon unnamed pipe.
+ ##
+ ##
+@@ -361,7 +379,7 @@
+
+ ########################################
+ ##
+-## Read, and write cron daemon TCP sockets.
++## Dontaudit Read, and write cron daemon TCP sockets.
+ ##
+ ##
+ ##
+@@ -369,7 +387,7 @@
+ ##
+ ##
+ #
+-interface(`cron_rw_tcp_sockets',`
++interface(`cron_dontaudit_rw_tcp_sockets',`
+ gen_require(`
+ type crond_t;
+ ')
+@@ -481,11 +499,14 @@
+ #
+ interface(`cron_read_system_job_tmp_files',`
+ gen_require(`
+- type system_cronjob_tmp_t;
++ type system_cronjob_tmp_t, cron_var_run_t;
+ ')
+
+ files_search_tmp($1)
+ allow $1 system_cronjob_tmp_t:file read_file_perms;
++
++ files_search_pids($1)
++ allow $1 cron_var_run_t:file read_file_perms;
+ ')
+
+ ########################################
+@@ -506,3 +527,83 @@
+
+ dontaudit $1 system_cronjob_tmp_t:file append;
+ ')
++
++
++########################################
++##
++## Do not audit attempts to write temporary
++## files from the system cron jobs.
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`cron_dontaudit_write_system_job_tmp_files',`
++ gen_require(`
++ type system_cronjob_tmp_t;
++ type cron_var_run_t;
++ type system_cronjob_var_run_t;
++ ')
++
++ dontaudit $1 system_cronjob_tmp_t:file write_file_perms;
++ dontaudit $1 cron_var_run_t:file write_file_perms;
++ ')
++
++########################################
++##
++## Read temporary files from the system cron jobs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`cron_read_system_job_lib_files',`
++ gen_require(`
++ type system_cronjob_var_lib_t;
++ ')
++
++
++ read_files_pattern($1, system_cronjob_var_lib_t, system_cronjob_var_lib_t)
++')
++
++########################################
++##
++## Manage files from the system cron jobs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`cron_manage_system_job_lib_files',`
++ gen_require(`
++ type system_cronjob_var_lib_t;
++ ')
++
++
++ manage_files_pattern($1, system_cronjob_var_lib_t, system_cronjob_var_lib_t)
++')
++
++########################################
++##
++## Manage pid files used by cron
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`cron_manage_pid_files',`
++ gen_require(`
++ type crond_var_run_t;
++ ')
++
++
++ manage_files_pattern($1, crond_var_run_t, crond_var_run_t)
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cron.te serefpolicy-3.6.1/policy/modules/services/cron.te
+--- nsaserefpolicy/policy/modules/services/cron.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/cron.te 2008-11-25 09:45:43.000000000 -0500
+@@ -38,6 +38,10 @@
+ type cron_var_lib_t;
+ files_type(cron_var_lib_t)
+
++# var/lib files
++type cron_var_run_t;
++files_type(cron_var_run_t)
++
+ # var/log files
+ type cron_log_t;
+ logging_log_file(cron_log_t)
+@@ -58,6 +62,8 @@
+
+ type crond_tmp_t;
+ files_tmp_file(crond_tmp_t)
++files_poly_parent(crond_tmp_t)
++mta_system_content(crond_tmp_t)
+
+ type crond_var_run_t;
+ files_pid_file(crond_var_run_t)
+@@ -103,6 +109,12 @@
+ files_type(user_cron_spool_t)
+ ubac_constrained(user_cron_spool_t)
+
++type system_cronjob_var_lib_t;
++files_type(system_cronjob_var_lib_t)
++
++type system_cronjob_var_run_t;
++files_pid_file(system_cronjob_var_run_t)
++
+ ########################################
+ #
+ # Admin crontab local policy
+@@ -130,7 +142,7 @@
+ # Cron daemon local policy
+ #
+
+-allow crond_t self:capability { dac_override setgid setuid sys_nice dac_read_search audit_control };
++allow crond_t self:capability { dac_override setgid setuid sys_nice dac_read_search };
+ dontaudit crond_t self:capability { sys_resource sys_tty_config };
+ allow crond_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
+ allow crond_t self:process { setexec setfscreate };
+@@ -149,15 +161,14 @@
+ allow crond_t crond_var_run_t:file manage_file_perms;
+ files_pid_filetrans(crond_t,crond_var_run_t,file)
+
+-allow crond_t cron_spool_t:dir rw_dir_perms;
+-allow crond_t cron_spool_t:file read_file_perms;
++manage_files_pattern(crond_t, cron_spool_t, cron_spool_t)
+
+ manage_dirs_pattern(crond_t, crond_tmp_t, crond_tmp_t)
+ manage_files_pattern(crond_t, crond_tmp_t, crond_tmp_t)
+ files_tmp_filetrans(crond_t, crond_tmp_t, { file dir })
+
+-allow crond_t system_cron_spool_t:dir list_dir_perms;
+-allow crond_t system_cron_spool_t:file read_file_perms;
++list_dirs_pattern(crond_t, system_cron_spool_t, system_cron_spool_t)
++read_files_pattern(crond_t, system_cron_spool_t, system_cron_spool_t)
+
+ kernel_read_kernel_sysctls(crond_t)
+ kernel_search_key(crond_t)
+@@ -183,6 +194,8 @@
+ corecmd_read_bin_symlinks(crond_t)
+
+ domain_use_interactive_fds(crond_t)
++domain_subj_id_change_exemption(crond_t)
++domain_role_change_exemption(crond_t)
+
+ files_read_etc_files(crond_t)
+ files_read_generic_spool(crond_t)
+@@ -192,10 +205,13 @@
+ files_search_default(crond_t)
+
+ init_rw_utmp(crond_t)
++init_spec_domtrans_script(crond_t)
+
+ auth_use_nsswitch(crond_t)
+
++logging_send_audit_msgs(crond_t)
+ logging_send_syslog_msg(crond_t)
++logging_set_loginuid(crond_t)
+
+ seutil_read_config(crond_t)
+ seutil_read_default_contexts(crond_t)
+@@ -208,6 +224,7 @@
+ userdom_list_user_home_dirs(crond_t)
+
+ mta_send_mail(crond_t)
++mta_system_content(cron_spool_t)
+
+ ifdef(`distro_debian',`
+ # pam_limits is used
+@@ -227,21 +244,45 @@
+ ')
+ ')
+
++tunable_policy(`allow_polyinstantiation',`
++ allow crond_t self:capability fowner;
++ files_search_tmp(crond_t)
++ files_polyinstantiate_all(crond_t)
++')
++
++optional_policy(`
++ apache_search_sys_content(crond_t)
++')
++
+ optional_policy(`
+ locallogin_search_keys(crond_t)
+ locallogin_link_keys(crond_t)
+ ')
+
++optional_policy(`
++ # these should probably be unconfined_crond_t
++ init_dbus_send_script(crond_t)
++')
++
++optional_policy(`
++ mono_domtrans(crond_t)
++')
++
+ tunable_policy(`fcron_crond', `
+ allow crond_t system_cron_spool_t:file manage_file_perms;
+ ')
+
+ optional_policy(`
++ amanda_search_var_lib(crond_t)
++')
++
++optional_policy(`
+ amavis_search_lib(crond_t)
+ ')
+
+ optional_policy(`
+- hal_dbus_send(crond_t)
++ hal_dbus_chat(crond_t)
++ hal_dbus_chat(system_cronjob_t)
+ ')
+
+ optional_policy(`
+@@ -283,6 +324,9 @@
+ allow system_cronjob_t cron_var_lib_t:file manage_file_perms;
+ files_var_lib_filetrans(system_cronjob_t, cron_var_lib_t, file)
+
++allow system_cronjob_t cron_var_run_t:file manage_file_perms;
++files_pid_filetrans(system_cronjob_t, cron_var_run_t, file)
++
+ allow system_cronjob_t system_cron_spool_t:file read_file_perms;
+ # The entrypoint interface is not used as this is not
+ # a regular entrypoint. Since crontab files are
+@@ -314,9 +358,13 @@
+ filetrans_pattern(system_cronjob_t, crond_tmp_t, system_cronjob_tmp_t, { file lnk_file })
+ files_tmp_filetrans(system_cronjob_t, system_cronjob_tmp_t, file)
+
++# var/lib files for system_crond
++files_search_var_lib(system_cronjob_t)
++manage_files_pattern(system_cronjob_t, system_cronjob_var_lib_t, system_cronjob_var_lib_t)
++
+ # Read from /var/spool/cron.
+ allow system_cronjob_t cron_spool_t:dir list_dir_perms;
+-allow system_cronjob_t cron_spool_t:file read_file_perms;
++allow system_cronjob_t cron_spool_t:file rw_file_perms;
+
+ kernel_read_kernel_sysctls(system_cronjob_t)
+ kernel_read_system_state(system_cronjob_t)
+@@ -370,7 +418,8 @@
+ init_read_utmp(system_cronjob_t)
+ init_dontaudit_rw_utmp(system_cronjob_t)
+ # prelink tells init to restart it self, we either need to allow or dontaudit
+-init_write_initctl(system_cronjob_t)
++init_telinit(system_cronjob_t)
++init_spec_domtrans_script(system_cronjob_t)
+
+ auth_use_nsswitch(system_cronjob_t)
+
+@@ -378,6 +427,7 @@
+ libs_exec_ld_so(system_cronjob_t)
+
+ logging_read_generic_logs(system_cronjob_t)
++logging_send_audit_msgs(system_cronjob_t)
+ logging_send_syslog_msg(system_cronjob_t)
+
+ miscfiles_read_localization(system_cronjob_t)
+@@ -428,11 +478,20 @@
+ ')
+
+ optional_policy(`
++ lpd_list_spool(system_cronjob_t)
++')
++
++optional_policy(`
++ mono_domtrans(system_cronjob_t)
++')
++
++optional_policy(`
+ mrtg_append_create_logs(system_cronjob_t)
+ ')
+
+ optional_policy(`
+ mta_send_mail(system_cronjob_t)
++ mta_system_content(system_cron_spool_t)
+ ')
+
+ optional_policy(`
+@@ -460,8 +519,7 @@
+ ')
+
+ optional_policy(`
+- # cjp: why?
+- squid_domtrans(system_cronjob_t)
++ spamassassin_manage_lib_files(system_cronjob_t)
+ ')
+
+ optional_policy(`
+@@ -469,17 +527,11 @@
+ ')
+
+ optional_policy(`
++ unconfined_dbus_send(crond_t)
++ unconfined_shell_domtrans(crond_t)
++ unconfined_domain(crond_t)
+ unconfined_domain(system_cronjob_t)
+- userdom_user_home_dir_filetrans_user_home_content(system_cronjob_t, { dir file lnk_file fifo_file sock_file })
+-')
+-
+-ifdef(`TODO',`
+-ifdef(`mta.te', `
+-allow system_cronjob_t mail_spool_t:lnk_file read;
+-allow mta_user_agent system_cronjob_t:fd use;
+-r_dir_file(system_mail_t, crond_tmp_t)
+ ')
+-') dnl end TODO
+
+ ########################################
+ #
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cups.fc serefpolicy-3.6.1/policy/modules/services/cups.fc
+--- nsaserefpolicy/policy/modules/services/cups.fc 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/cups.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -8,24 +8,35 @@
+ /etc/cups/ppd/.* -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+ /etc/cups/ppds\.dat -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+ /etc/cups/printers\.conf.* -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
++/etc/cups/subscriptions.* -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+ /etc/cups/certs -d gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+ /etc/cups/certs/.* -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
++/etc/rc\.d/init\.d/cups -- gen_context(system_u:object_r:cupsd_initrc_exec_t,s0)
++
++/etc/cups/interfaces(/.*)? gen_context(system_u:object_r:cupsd_interface_t,s0)
+
+ /etc/hp(/.*)? gen_context(system_u:object_r:hplip_etc_t,s0)
+
+ /etc/printcap.* -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+
++/opt/gutenprint/ppds(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
++
+ /usr/bin/cups-config-daemon -- gen_context(system_u:object_r:cupsd_config_exec_t,s0)
++/usr/bin/hpijs -- gen_context(system_u:object_r:hplip_exec_t,s0)
+
+-/usr/lib(64)?/cups/backend/.* -- gen_context(system_u:object_r:cupsd_exec_t,s0)
+-/usr/lib(64)?/cups/daemon/.* -- gen_context(system_u:object_r:cupsd_exec_t,s0)
+-/usr/lib(64)?/cups/daemon/cups-lpd -- gen_context(system_u:object_r:cupsd_lpd_exec_t,s0)
++/usr/lib/cups/daemon/cups-lpd -- gen_context(system_u:object_r:cupsd_lpd_exec_t,s0)
++/usr/lib64/cups/daemon/cups-lpd -- gen_context(system_u:object_r:cupsd_lpd_exec_t,s0)
+
+ /usr/libexec/hal_lpadmin -- gen_context(system_u:object_r:cupsd_config_exec_t,s0)
+
+ /usr/sbin/cupsd -- gen_context(system_u:object_r:cupsd_exec_t,s0)
+ /usr/sbin/hal_lpadmin -- gen_context(system_u:object_r:cupsd_config_exec_t,s0)
+ /usr/sbin/hpiod -- gen_context(system_u:object_r:hplip_exec_t,s0)
++/usr/sbin/hp-[^/]+ -- gen_context(system_u:object_r:hplip_exec_t,s0)
++# keep as separate lines to ensure proper sorting
++/usr/lib/cups/backend/hp.* -- gen_context(system_u:object_r:hplip_exec_t,s0)
++/usr/lib64/cups/backend/hp.* -- gen_context(system_u:object_r:hplip_exec_t,s0)
++
+ /usr/sbin/printconf-backend -- gen_context(system_u:object_r:cupsd_config_exec_t,s0)
+ /usr/sbin/ptal-printd -- gen_context(system_u:object_r:ptal_exec_t,s0)
+ /usr/sbin/ptal-mlcd -- gen_context(system_u:object_r:ptal_exec_t,s0)
+@@ -33,7 +44,7 @@
+
+ /usr/share/cups(/.*)? gen_context(system_u:object_r:cupsd_etc_t,s0)
+ /usr/share/foomatic/db/oldprinterids -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+-/usr/share/hplip/hpssd\.py -- gen_context(system_u:object_r:hplip_exec_t,s0)
++/usr/share/hplip/.*\.py -- gen_context(system_u:object_r:hplip_exec_t,s0)
+
+ /var/cache/alchemist/printconf.* gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+ /var/cache/foomatic(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+@@ -43,10 +54,18 @@
+ /var/lib/cups/certs/.* -- gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+
+ /var/log/cups(/.*)? gen_context(system_u:object_r:cupsd_log_t,s0)
+-/var/log/turboprint_cups\.log.* -- gen_context(system_u:object_r:cupsd_log_t,s0)
++/var/log/turboprint.* gen_context(system_u:object_r:cupsd_log_t,s0)
+
+ /var/run/cups(/.*)? gen_context(system_u:object_r:cupsd_var_run_t,s0)
++/var/ccpd(/.*)? gen_context(system_u:object_r:cupsd_var_run_t,s0)
+ /var/run/hp.*\.pid -- gen_context(system_u:object_r:hplip_var_run_t,s0)
+ /var/run/hp.*\.port -- gen_context(system_u:object_r:hplip_var_run_t,s0)
+ /var/run/ptal-printd(/.*)? gen_context(system_u:object_r:ptal_var_run_t,s0)
+ /var/run/ptal-mlcd(/.*)? gen_context(system_u:object_r:ptal_var_run_t,s0)
++
++/usr/local/Brother/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
++/usr/local/Printer/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
++
++/usr/local/linuxprinter/ppd(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
++
++/usr/lib/cups/backend/cups-pdf -- gen_context(system_u:object_r:cups_pdf_exec_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cups.if serefpolicy-3.6.1/policy/modules/services/cups.if
+--- nsaserefpolicy/policy/modules/services/cups.if 2008-11-11 16:13:47.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/cups.if 2008-11-25 09:45:43.000000000 -0500
+@@ -20,6 +20,30 @@
+
+ ########################################
+ ##
++## Setup cups to transtion to the cups backend domain
++##
++##
++##
++## The type of the process performing this action.
++##
++##
++#
++interface(`cups_backend',`
++ gen_require(`
++ type cupsd_t;
++ ')
++
++ domtrans_pattern(cupsd_t, $2, $1)
++
++ allow cupsd_t $1:process signal;
++ allow $1 cupsd_t:unix_stream_socket connected_stream_socket_perms;
++
++ cups_read_config($1)
++ cups_append_log($1)
++')
++
++########################################
++##
+ ## Connect to cupsd over an unix domain stream socket.
+ ##
+ ##
+@@ -212,6 +236,25 @@
+
+ ########################################
+ ##
++## Append cups log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`cups_append_log',`
++ gen_require(`
++ type cupsd_log_t;
++ ')
++
++ logging_search_logs($1)
++ append_files_pattern($1, cupsd_log_t, cupsd_log_t)
++')
++
++########################################
++##
+ ## Write cups log files.
+ ##
+ ##
+@@ -247,3 +290,66 @@
+ files_search_pids($1)
+ stream_connect_pattern($1, ptal_var_run_t, ptal_var_run_t, ptal_t)
+ ')
++
++########################################
++##
++## All of the rules required to administrate
++## an cups environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## The role to be allowed to manage the cups domain.
++##
++##
++##
++#
++interface(`cups_admin',`
++ gen_require(`
++ type cupsd_t, cupsd_tmp_t, cupsd_lpd_tmp_t;
++ type cupsd_etc_t, cupsd_log_t, cupsd_spool_t;
++ type cupsd_config_var_run_t, cupsd_lpd_var_run_t;
++ type cupsd_var_run_t, ptal_etc_t;
++ type ptal_var_run_t, hplip_var_run_t;
++ type cupsd_initrc_exec_t;
++ ')
++
++ allow $1 cupsd_t:process { ptrace signal_perms };
++ ps_process_pattern($1, cupsd_t)
++
++ init_labeled_script_domtrans($1, cupsd_initrc_exec_t)
++ domain_system_change_exemption($1)
++ role_transition $2 cupsd_initrc_exec_t system_r;
++ allow $2 system_r;
++
++ files_list_tmp($1)
++ admin_pattern($1, cupsd_tmp_t)
++
++ admin_pattern($1, cupsd_lpd_tmp_t)
++
++ files_list_etc($1)
++ admin_pattern($1, cupsd_etc_t)
++
++ admin_pattern($1, ptal_etc_t)
++
++ files_list_spool($1)
++ admin_pattern($1, cupsd_spool_t)
++
++ logging_list_logs($1)
++ admin_pattern($1, cupsd_log_t)
++
++ files_list_pids($1)
++ admin_pattern($1, cupsd_var_run_t)
++
++ admin_pattern($1, ptal_var_run_t)
++
++ admin_pattern($1, cupsd_config_var_run_t)
++
++ admin_pattern($1, cupsd_lpd_var_run_t)
++
++ admin_pattern($1, hplip_var_run_t)
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cups.te serefpolicy-3.6.1/policy/modules/services/cups.te
+--- nsaserefpolicy/policy/modules/services/cups.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/cups.te 2008-12-02 10:19:15.000000000 -0500
+@@ -20,6 +20,12 @@
+ type cupsd_etc_t;
+ files_config_file(cupsd_etc_t)
+
++type cupsd_initrc_exec_t;
++init_script_file(cupsd_initrc_exec_t)
++
++type cupsd_interface_t;
++files_type(cupsd_interface_t)
++
+ type cupsd_rw_etc_t;
+ files_config_file(cupsd_rw_etc_t)
+
+@@ -48,6 +54,10 @@
+ type hplip_t;
+ type hplip_exec_t;
+ init_daemon_domain(hplip_t, hplip_exec_t)
++# For CUPS to run as a backend
++cups_backend(hplip_t, hplip_exec_t)
++domtrans_pattern(cupsd_config_t, hplip_exec_t, hplip_t)
++read_files_pattern(cupsd_config_t, hplip_etc_t, hplip_etc_t)
+
+ type hplip_etc_t;
+ files_config_file(hplip_etc_t)
+@@ -65,6 +75,16 @@
+ type ptal_var_run_t;
+ files_pid_file(ptal_var_run_t)
+
++type cups_pdf_t;
++type cups_pdf_exec_t;
++domain_type(cups_pdf_t)
++domain_entry_file(cups_pdf_t, cups_pdf_exec_t)
++cups_backend(cups_pdf_t, cups_pdf_exec_t)
++role system_r types cups_pdf_t;
++
++type cups_pdf_tmp_t;
++files_tmp_file(cups_pdf_tmp_t)
++
+ ifdef(`enable_mcs',`
+ init_ranged_daemon_domain(cupsd_t,cupsd_exec_t,s0 - mcs_systemhigh)
+ ')
+@@ -79,13 +99,14 @@
+ #
+
+ # /usr/lib/cups/backend/serial needs sys_admin(?!)
+-allow cupsd_t self:capability { sys_admin dac_override dac_read_search kill setgid setuid fsetid net_bind_service fowner chown dac_override sys_resource sys_tty_config };
++allow cupsd_t self:capability { sys_admin dac_override dac_read_search kill setgid setuid fsetid net_bind_service fowner chown dac_override sys_rawio sys_resource sys_tty_config };
+ dontaudit cupsd_t self:capability { sys_tty_config net_admin };
+-allow cupsd_t self:process { setsched signal_perms };
+-allow cupsd_t self:fifo_file rw_file_perms;
++allow cupsd_t self:process { setpgid setsched signal_perms };
++allow cupsd_t self:fifo_file rw_fifo_file_perms;
+ allow cupsd_t self:unix_stream_socket { create_stream_socket_perms connectto };
+ allow cupsd_t self:unix_dgram_socket create_socket_perms;
+ allow cupsd_t self:netlink_selinux_socket create_socket_perms;
++allow cupsd_t self:shm create_shm_perms;
+ allow cupsd_t self:tcp_socket create_stream_socket_perms;
+ allow cupsd_t self:udp_socket create_socket_perms;
+ allow cupsd_t self:appletalk_socket create_socket_perms;
+@@ -97,6 +118,9 @@
+ read_lnk_files_pattern(cupsd_t, cupsd_etc_t, cupsd_etc_t)
+ files_search_etc(cupsd_t)
+
++manage_files_pattern(cupsd_t, cupsd_interface_t, cupsd_interface_t)
++can_exec(cupsd_t, cupsd_interface_t)
++
+ manage_dirs_pattern(cupsd_t, cupsd_etc_t, cupsd_rw_etc_t)
+ manage_files_pattern(cupsd_t, cupsd_etc_t, cupsd_rw_etc_t)
+ filetrans_pattern(cupsd_t, cupsd_etc_t, cupsd_rw_etc_t, file)
+@@ -104,8 +128,8 @@
+
+ # allow cups to execute its backend scripts
+ can_exec(cupsd_t, cupsd_exec_t)
+-allow cupsd_t cupsd_exec_t:dir search;
+-allow cupsd_t cupsd_exec_t:lnk_file read;
++allow cupsd_t cupsd_exec_t:dir search_dir_perms;
++allow cupsd_t cupsd_exec_t:lnk_file read_lnk_file_perms;
+
+ manage_files_pattern(cupsd_t, cupsd_log_t, cupsd_log_t)
+ allow cupsd_t cupsd_log_t:dir setattr;
+@@ -116,13 +140,20 @@
+ manage_fifo_files_pattern(cupsd_t, cupsd_tmp_t, cupsd_tmp_t)
+ files_tmp_filetrans(cupsd_t, cupsd_tmp_t, { file dir fifo_file })
+
++# This whole section needs to be moved to a smbspool policy
++# smbspool seems to be iterating through all existing tmp files.
++# Looking for kerberos files
++files_getattr_all_tmp_files(cupsd_t)
++userdom_read_user_tmp_files(cupsd_t)
++files_dontaudit_getattr_all_tmp_sockets(cupsd_t)
++
+ allow cupsd_t cupsd_var_run_t:dir setattr;
+ manage_files_pattern(cupsd_t, cupsd_var_run_t, cupsd_var_run_t)
+ manage_sock_files_pattern(cupsd_t, cupsd_var_run_t, cupsd_var_run_t)
++manage_fifo_files_pattern(cupsd_t,cupsd_var_run_t,cupsd_var_run_t)
+ files_pid_filetrans(cupsd_t, cupsd_var_run_t, file)
+
+-read_files_pattern(cupsd_t, hplip_etc_t, hplip_etc_t)
+-
++allow cupsd_t hplip_t:process {signal sigkill };
+ allow cupsd_t hplip_var_run_t:file read_file_perms;
+
+ stream_connect_pattern(cupsd_t, ptal_var_run_t, ptal_var_run_t, ptal_t)
+@@ -149,44 +180,49 @@
+ corenet_tcp_bind_reserved_port(cupsd_t)
+ corenet_dontaudit_tcp_bind_all_reserved_ports(cupsd_t)
+ corenet_tcp_connect_all_ports(cupsd_t)
++corenet_tcp_connect_smbd_port(cupsd_t)
+ corenet_sendrecv_hplip_client_packets(cupsd_t)
+ corenet_sendrecv_ipp_client_packets(cupsd_t)
+ corenet_sendrecv_ipp_server_packets(cupsd_t)
++corenet_tcp_bind_all_rpc_ports(cupsd_t)
+
+ dev_rw_printer(cupsd_t)
+ dev_read_urand(cupsd_t)
+ dev_read_sysfs(cupsd_t)
+-dev_read_usbfs(cupsd_t)
++dev_rw_input_dev(cupsd_t) #447878
++dev_rw_generic_usb_dev(cupsd_t)
++dev_rw_usbfs(cupsd_t)
+ dev_getattr_printer_dev(cupsd_t)
+
+ domain_read_all_domains_state(cupsd_t)
+
+ fs_getattr_all_fs(cupsd_t)
+ fs_search_auto_mountpoints(cupsd_t)
++fs_read_anon_inodefs_files(cupsd_t)
+
++mls_fd_use_all_levels(cupsd_t)
+ mls_file_downgrade(cupsd_t)
+ mls_file_write_all_levels(cupsd_t)
+ mls_file_read_all_levels(cupsd_t)
++mls_rangetrans_target(cupsd_t)
+ mls_socket_write_all_levels(cupsd_t)
+
+ term_use_unallocated_ttys(cupsd_t)
+ term_search_ptys(cupsd_t)
+
+-auth_domtrans_chk_passwd(cupsd_t)
+-auth_dontaudit_read_pam_pid(cupsd_t)
+-
+ # Filter scripts may be shell scripts, and may invoke progs like /bin/mktemp
+ corecmd_exec_shell(cupsd_t)
+ corecmd_exec_bin(cupsd_t)
+
+ domain_use_interactive_fds(cupsd_t)
+
++files_list_spool(cupsd_t)
+ files_read_etc_files(cupsd_t)
+ files_read_etc_runtime_files(cupsd_t)
+ # read python modules
+ files_read_usr_files(cupsd_t)
+ # for /var/lib/defoma
+-files_search_var_lib(cupsd_t)
++files_read_var_lib_files(cupsd_t)
+ files_list_world_readable(cupsd_t)
+ files_read_world_readable_files(cupsd_t)
+ files_read_world_readable_symlinks(cupsd_t)
+@@ -195,15 +231,16 @@
+ files_read_var_symlinks(cupsd_t)
+ # for /etc/printcap
+ files_dontaudit_write_etc_files(cupsd_t)
+-# smbspool seems to be iterating through all existing tmp files.
+-# redhat bug #214953
+-# cjp: this might be a broken behavior
+-files_dontaudit_getattr_all_tmp_files(cupsd_t)
+
+ selinux_compute_access_vector(cupsd_t)
++selinux_validate_context(cupsd_t)
+
+ init_exec_script_files(cupsd_t)
++init_read_utmp(cupsd_t)
+
++auth_domtrans_chk_passwd(cupsd_t)
++auth_dontaudit_read_pam_pid(cupsd_t)
++auth_rw_faillog(cupsd_t)
+ auth_use_nsswitch(cupsd_t)
+
+ # Read /usr/lib/gconv/gconv-modules.* and /usr/lib/python2.2/.*
+@@ -217,17 +254,21 @@
+ miscfiles_read_fonts(cupsd_t)
+
+ seutil_read_config(cupsd_t)
++sysnet_exec_ifconfig(cupsd_t)
+
+-sysnet_read_config(cupsd_t)
+-
++files_dontaudit_list_home(cupsd_t)
+ userdom_dontaudit_use_unpriv_user_fds(cupsd_t)
+ userdom_dontaudit_search_user_home_content(cupsd_t)
+
+ # Write to /var/spool/cups.
+ lpd_manage_spool(cupsd_t)
++lpd_read_config(cupsd_t)
++lpd_exec_lpr(cupsd_t)
++lpd_relabel_spool(cupsd_t)
+
+ ifdef(`enable_mls',`
+- lpd_relabel_spool(cupsd_t)
++ mls_trusted_object(cupsd_var_run_t)
++ init_ranged_daemon_domain(cupsd_t, cupsd_exec_t,mls_systemhigh)
+ ')
+
+ optional_policy(`
+@@ -244,8 +285,16 @@
+ userdom_dbus_send_all_users(cupsd_t)
+
+ optional_policy(`
++ avahi_dbus_chat(cupsd_t)
++ ')
++
++ optional_policy(`
+ hal_dbus_chat(cupsd_t)
+ ')
++
++ optional_policy(`
++ unconfined_dbus_chat(cupsd_t)
++ ')
+ ')
+
+ optional_policy(`
+@@ -261,6 +310,10 @@
+ ')
+
+ optional_policy(`
++ mta_send_mail(cupsd_t)
++')
++
++optional_policy(`
+ # cups execs smbtool which reads samba_etc_t files
+ samba_read_config(cupsd_t)
+ samba_rw_var_files(cupsd_t)
+@@ -279,7 +332,7 @@
+ # Cups configuration daemon local policy
+ #
+
+-allow cupsd_config_t self:capability { chown sys_tty_config };
++allow cupsd_config_t self:capability { chown dac_override sys_tty_config };
+ dontaudit cupsd_config_t self:capability sys_tty_config;
+ allow cupsd_config_t self:process signal_perms;
+ allow cupsd_config_t self:fifo_file rw_fifo_file_perms;
+@@ -311,7 +364,7 @@
+ files_pid_filetrans(cupsd_config_t, cupsd_config_var_run_t, file)
+
+ kernel_read_system_state(cupsd_config_t)
+-kernel_read_kernel_sysctls(cupsd_config_t)
++kernel_read_all_sysctls(cupsd_config_t)
+
+ corenet_all_recvfrom_unlabeled(cupsd_config_t)
+ corenet_all_recvfrom_netlabel(cupsd_config_t)
+@@ -324,6 +377,7 @@
+ dev_read_sysfs(cupsd_config_t)
+ dev_read_urand(cupsd_config_t)
+ dev_read_rand(cupsd_config_t)
++dev_rw_generic_usb_dev(cupsd_config_t)
+
+ fs_getattr_all_fs(cupsd_config_t)
+ fs_search_auto_mountpoints(cupsd_config_t)
+@@ -341,13 +395,14 @@
+ files_read_var_symlinks(cupsd_config_t)
+
+ # Alternatives asks for this
+-init_getattr_script_files(cupsd_config_t)
++init_getattr_all_script_files(cupsd_config_t)
+
+ auth_use_nsswitch(cupsd_config_t)
+
+ logging_send_syslog_msg(cupsd_config_t)
+
+ miscfiles_read_localization(cupsd_config_t)
++miscfiles_read_hwdata(cupsd_config_t)
+
+ seutil_dontaudit_search_config(cupsd_config_t)
+
+@@ -359,14 +414,16 @@
+ lpd_read_config(cupsd_config_t)
+
+ ifdef(`distro_redhat',`
+- init_getattr_script_files(cupsd_config_t)
+-
+ optional_policy(`
+ rpm_read_db(cupsd_config_t)
+ ')
+ ')
+
+ optional_policy(`
++ term_use_generic_ptys(cupsd_config_t)
++')
++
++optional_policy(`
+ cron_system_entry(cupsd_config_t, cupsd_config_exec_t)
+ ')
+
+@@ -382,6 +439,7 @@
+ optional_policy(`
+ hal_domtrans(cupsd_config_t)
+ hal_read_tmp_files(cupsd_config_t)
++ hal_dontaudit_use_fds(hplip_t)
+ ')
+
+ optional_policy(`
+@@ -491,7 +549,8 @@
+ allow hplip_t self:udp_socket create_socket_perms;
+ allow hplip_t self:rawip_socket create_socket_perms;
+
+-allow hplip_t cupsd_etc_t:dir search;
++allow hplip_t cupsd_etc_t:dir search_dir_perms;
++allow hplip_t cupsd_tmp_t:file rw_file_perms;
+
+ cups_stream_connect(hplip_t)
+
+@@ -500,6 +559,10 @@
+ read_lnk_files_pattern(hplip_t, hplip_etc_t, hplip_etc_t)
+ files_search_etc(hplip_t)
+
++fs_read_anon_inodefs_files(hplip_t)
++
++read_files_pattern(cupsd_t, hplip_etc_t, hplip_etc_t)
++
+ manage_files_pattern(hplip_t, hplip_var_run_t, hplip_var_run_t)
+ files_pid_filetrans(hplip_t, hplip_var_run_t, file)
+
+@@ -529,7 +592,8 @@
+ dev_read_urand(hplip_t)
+ dev_read_rand(hplip_t)
+ dev_rw_generic_usb_dev(hplip_t)
+-dev_read_usbfs(hplip_t)
++dev_rw_usbfs(hplip_t)
++
+
+ fs_getattr_all_fs(hplip_t)
+ fs_search_auto_mountpoints(hplip_t)
+@@ -553,7 +617,9 @@
+ userdom_dontaudit_search_user_home_dirs(hplip_t)
+ userdom_dontaudit_search_user_home_content(hplip_t)
+
+-lpd_read_config(cupsd_t)
++
++lpd_read_config(hplip_t)
++lpd_manage_spool(hplip_t)
+
+ optional_policy(`
+ dbus_system_bus_client(hplip_t)
+@@ -635,3 +701,39 @@
+ optional_policy(`
+ udev_read_db(ptal_t)
+ ')
++
++########################################
++#
++# cups_pdf local policy
++#
++
++allow cups_pdf_t self:capability { chown fsetid setuid setgid dac_override };
++
++allow cups_pdf_t self:fifo_file rw_file_perms;
++allow cups_pdf_t self:unix_stream_socket create_stream_socket_perms;
++
++files_read_etc_files(cups_pdf_t)
++files_read_usr_files(cups_pdf_t)
++
++kernel_read_system_state(cups_pdf_t)
++
++auth_use_nsswitch(cups_pdf_t)
++
++corecmd_exec_shell(cups_pdf_t)
++corecmd_exec_bin(cups_pdf_t)
++
++miscfiles_read_localization(cups_pdf_t)
++
++manage_files_pattern(cups_pdf_t, cups_pdf_tmp_t, cups_pdf_tmp_t)
++manage_dirs_pattern(cups_pdf_t, cups_pdf_tmp_t, cups_pdf_tmp_t)
++files_tmp_filetrans(cups_pdf_t, cups_pdf_tmp_t, { file dir })
++
++userdom_home_filetrans_user_home_dir(cups_pdf_t)
++userdom_manage_user_home_content_dirs(cups_pdf_t)
++userdom_manage_user_home_content_files(cups_pdf_t)
++
++lpd_manage_spool(cups_pdf_t)
++
++manage_files_pattern(cups_pdf_t, cupsd_log_t, cupsd_log_t)
++miscfiles_read_fonts(cups_pdf_t)
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cvs.te serefpolicy-3.6.1/policy/modules/services/cvs.te
+--- nsaserefpolicy/policy/modules/services/cvs.te 2008-11-11 16:13:45.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/cvs.te 2008-11-25 09:45:43.000000000 -0500
+@@ -112,4 +112,5 @@
+ read_files_pattern(httpd_cvs_script_t, cvs_data_t, cvs_data_t)
+ manage_dirs_pattern(httpd_cvs_script_t, cvs_tmp_t, cvs_tmp_t)
+ manage_files_pattern(httpd_cvs_script_t, cvs_tmp_t, cvs_tmp_t)
++ files_tmp_filetrans(httpd_cvs_script_t, cvs_tmp_t, { file dir })
+ ')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/cyphesis.fc serefpolicy-3.6.1/policy/modules/services/cyphesis.fc
+--- nsaserefpolicy/policy/modules/services/cyphesis.fc 2008-09-03 11:05:02.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/cyphesis.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -1 +1,6 @@
+ /usr/bin/cyphesis -- gen_context(system_u:object_r:cyphesis_exec_t,s0)
++
++/var/log/cyphesis(/.*)? gen_context(system_u:object_r:cyphesis_log_t,s0)
++
++/var/run/cyphesis(/.*)? gen_context(system_u:object_r:cyphesis_var_run_t,s0)
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dbus.fc serefpolicy-3.6.1/policy/modules/services/dbus.fc
+--- nsaserefpolicy/policy/modules/services/dbus.fc 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dbus.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -4,6 +4,9 @@
+ /usr/bin/dbus-daemon(-1)? -- gen_context(system_u:object_r:dbusd_exec_t,s0)
+ /bin/dbus-daemon -- gen_context(system_u:object_r:dbusd_exec_t,s0)
+
++/lib/dbus-1/dbus-daemon-launch-helper -- gen_context(system_u:object_r:dbusd_exec_t,s0)
++/lib64/dbus-1/dbus-daemon-launch-helper -- gen_context(system_u:object_r:dbusd_exec_t,s0)
++
+ /var/lib/dbus(/.*)? gen_context(system_u:object_r:system_dbusd_var_lib_t,s0)
+
+ /var/run/dbus(/.*)? gen_context(system_u:object_r:system_dbusd_var_run_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dbus.if serefpolicy-3.6.1/policy/modules/services/dbus.if
+--- nsaserefpolicy/policy/modules/services/dbus.if 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dbus.if 2008-11-25 09:45:43.000000000 -0500
+@@ -185,10 +185,12 @@
+ type system_dbusd_t, system_dbusd_t;
+ type system_dbusd_var_run_t, system_dbusd_var_lib_t;
+ class dbus send_msg;
++ attribute dbusd_unconfined;
+ ')
+
+ # SE-DBus specific permissions
+- allow $1 { system_dbusd_t self }:dbus send_msg;
++ allow $1 { system_dbusd_t self dbusd_unconfined }:dbus send_msg;
++ allow { system_dbusd_t dbusd_unconfined } $1:dbus send_msg;
+
+ read_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
+ files_search_var_lib($1)
+@@ -197,6 +199,10 @@
+ files_search_pids($1)
+ stream_connect_pattern($1, system_dbusd_var_run_t, system_dbusd_var_run_t, system_dbusd_t)
+ dbus_read_config($1)
++
++ optional_policy(`
++ rpm_script_dbus_chat($1)
++ ')
+ ')
+
+ #######################################
+@@ -244,6 +250,35 @@
+
+ ########################################
+ ##
++## Chat on user/application specific DBUS.
++##
++##
++##
++## The prefix of the domain (e.g., user
++## is the prefix for user_t).
++##
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++template(`dbus_chat_user_bus',`
++ gen_require(`
++ type $1_t;
++ type $1_dbusd_t;
++ class dbus send_msg;
++ ')
++
++ allow $2 $1_dbusd_t:dbus send_msg;
++ allow $1_dbusd_t $2:dbus send_msg;
++ allow $2 $1_t:dbus send_msg;
++ allow $1_t $2:dbus send_msg;
++')
++
++########################################
++##
+ ## Read dbus configuration.
+ ##
+ ##
+@@ -318,3 +353,77 @@
+
+ allow $1 system_dbusd_t:dbus *;
+ ')
++
++########################################
++##
++## Allow unconfined access to the system DBUS.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dbus_unconfined',`
++ gen_require(`
++ attribute dbusd_unconfined;
++ ')
++
++ typeattribute $1 dbusd_unconfined;
++')
++
++########################################
++##
++## Create a domain for processes
++## which can be started by the system dbus
++##
++##
++##
++## Type to be used as a domain.
++##
++##
++##
++##
++## Type of the program to be used as an entry point to this domain.
++##
++##
++#
++interface(`dbus_system_domain',`
++ gen_require(`
++ type system_dbusd_t;
++ role system_r;
++ ')
++
++ domain_type($1)
++ domain_entry_file($1, $2)
++
++ role system_r types $1;
++
++ domtrans_pattern(system_dbusd_t, $2, $1)
++
++ dbus_system_bus_client($1)
++ dbus_connect_system_bus($1)
++
++ ifdef(`hide_broken_symptoms', `
++ dontaudit $1 system_dbusd_t:netlink_selinux_socket { read write };
++ ');
++')
++
++########################################
++##
++## Dontaudit Read, and write system dbus TCP sockets.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dbus_dontaudit_system_bus_rw_tcp_sockets',`
++ gen_require(`
++ type system_dbusd_t;
++ ')
++
++ allow $1 system_dbusd_t:tcp_socket { read write };
++ allow $1 system_dbusd_t:fd use;
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dbus.te serefpolicy-3.6.1/policy/modules/services/dbus.te
+--- nsaserefpolicy/policy/modules/services/dbus.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dbus.te 2008-11-25 09:45:43.000000000 -0500
+@@ -9,11 +9,11 @@
+ #
+ # Delcarations
+ #
+-
++attribute dbusd_unconfined;
+ attribute session_bus_type;
+
+ type dbusd_etc_t;
+-files_type(dbusd_etc_t)
++files_config_file(dbusd_etc_t)
+
+ type dbusd_exec_t;
+ corecmd_executable_file(dbusd_exec_t)
+@@ -31,11 +31,23 @@
+ files_tmp_file(system_dbusd_tmp_t)
+
+ type system_dbusd_var_lib_t;
+-files_pid_file(system_dbusd_var_lib_t)
++files_type(system_dbusd_var_lib_t)
+
+ type system_dbusd_var_run_t;
+ files_pid_file(system_dbusd_var_run_t)
+
++ifdef(`enable_mcs',`
++ init_ranged_daemon_domain(system_dbusd_t, dbusd_exec_t,s0 - mcs_systemhigh)
++')
++
++ifdef(`enable_mls',`
++ init_ranged_daemon_domain(system_dbusd_t, dbusd_exec_t,s0 - mls_systemhigh)
++ mls_fd_use_all_levels(system_dbusd_t)
++ mls_rangetrans_target(system_dbusd_t)
++ mls_file_read_all_levels(system_dbusd_t)
++ mls_socket_write_all_levels(system_dbusd_t)
++')
++
+ ##############################
+ #
+ # System bus local policy
+@@ -45,7 +57,7 @@
+ # cjp: dac_override should probably go in a distro_debian
+ allow system_dbusd_t self:capability { dac_override setgid setpcap setuid };
+ dontaudit system_dbusd_t self:capability sys_tty_config;
+-allow system_dbusd_t self:process { getattr signal_perms setcap };
++allow system_dbusd_t self:process { getattr signal_perms setpgid getcap setcap };
+ allow system_dbusd_t self:fifo_file rw_fifo_file_perms;
+ allow system_dbusd_t self:dbus { send_msg acquire_svc };
+ allow system_dbusd_t self:unix_stream_socket { connectto create_stream_socket_perms connectto };
+@@ -53,6 +65,8 @@
+ # Receive notifications of policy reloads and enforcing status changes.
+ allow system_dbusd_t self:netlink_selinux_socket { create bind read };
+
++can_exec(system_dbusd_t, dbusd_exec_t)
++
+ allow system_dbusd_t dbusd_etc_t:dir list_dir_perms;
+ read_files_pattern(system_dbusd_t, dbusd_etc_t, dbusd_etc_t)
+ read_lnk_files_pattern(system_dbusd_t, dbusd_etc_t, dbusd_etc_t)
+@@ -75,6 +89,8 @@
+
+ fs_getattr_all_fs(system_dbusd_t)
+ fs_search_auto_mountpoints(system_dbusd_t)
++fs_list_inotifyfs(system_dbusd_t)
++fs_dontaudit_list_nfs(system_dbusd_t)
+
+ selinux_get_fs_mount(system_dbusd_t)
+ selinux_validate_context(system_dbusd_t)
+@@ -91,7 +107,6 @@
+ corecmd_list_bin(system_dbusd_t)
+ corecmd_read_bin_pipes(system_dbusd_t)
+ corecmd_read_bin_sockets(system_dbusd_t)
+-corecmd_exec_bin(system_dbusd_t)
+
+ domain_use_interactive_fds(system_dbusd_t)
+
+@@ -101,6 +116,8 @@
+
+ init_use_fds(system_dbusd_t)
+ init_use_script_ptys(system_dbusd_t)
++init_bin_domtrans_spec(system_dbusd_t)
++init_domtrans_script(system_dbusd_t)
+
+ logging_send_audit_msgs(system_dbusd_t)
+ logging_send_syslog_msg(system_dbusd_t)
+@@ -128,9 +145,34 @@
+ ')
+
+ optional_policy(`
++ gnome_exec_gconf(system_dbusd_t)
++')
++
++optional_policy(`
++ networkmanager_initrc_domtrans(system_dbusd_t)
++')
++
++optional_policy(`
++ polkit_domtrans_auth(system_dbusd_t)
++ polkit_search_lib(system_dbusd_t)
++')
++
++optional_policy(`
+ sysnet_domtrans_dhcpc(system_dbusd_t)
+ ')
+
+ optional_policy(`
+ udev_read_db(system_dbusd_t)
+ ')
++
++optional_policy(`
++ gen_require(`
++ type unconfined_dbusd_t;
++ ')
++ unconfined_domain(unconfined_dbusd_t)
++ unconfined_execmem_domtrans(unconfined_dbusd_t)
++
++ optional_policy(`
++ xserver_rw_shm(unconfined_dbusd_t)
++ ')
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dcc.te serefpolicy-3.6.1/policy/modules/services/dcc.te
+--- nsaserefpolicy/policy/modules/services/dcc.te 2008-11-19 11:51:44.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dcc.te 2008-11-25 09:45:43.000000000 -0500
+@@ -137,6 +137,7 @@
+
+ corenet_all_recvfrom_unlabeled(dcc_client_t)
+ corenet_all_recvfrom_netlabel(dcc_client_t)
++corenet_udp_bind_all_nodes(dcc_client_t)
+ corenet_udp_sendrecv_generic_if(dcc_client_t)
+ corenet_udp_sendrecv_all_nodes(dcc_client_t)
+ corenet_udp_sendrecv_all_ports(dcc_client_t)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dhcp.if serefpolicy-3.6.1/policy/modules/services/dhcp.if
+--- nsaserefpolicy/policy/modules/services/dhcp.if 2008-11-18 18:57:20.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dhcp.if 2008-11-25 09:45:43.000000000 -0500
+@@ -22,6 +22,25 @@
+
+ ########################################
+ ##
++## Execute dhcp server in the dhcp domain.
++##
++##
++##
++## The type of the process performing this action.
++##
++##
++#
++#
++interface(`dhcpd_initrc_domtrans',`
++ gen_require(`
++ type dhcpd_initrc_exec_t;
++ ')
++
++ init_labeled_script_domtrans($1, dhcpd_initrc_exec_t)
++')
++
++########################################
++##
+ ## All of the rules required to administrate
+ ## an dhcp environment
+ ##
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dnsmasq.if serefpolicy-3.6.1/policy/modules/services/dnsmasq.if
+--- nsaserefpolicy/policy/modules/services/dnsmasq.if 2008-11-18 18:57:21.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dnsmasq.if 2008-11-25 09:45:43.000000000 -0500
+@@ -22,6 +22,25 @@
+
+ ########################################
+ ##
++## Execute dnsmasq server in the dnsmasq domain.
++##
++##
++##
++## The type of the process performing this action.
++##
++##
++#
++#
++interface(`dnsmasq_initrc_domtrans',`
++ gen_require(`
++ type dnsmasq_initrc_exec_t;
++ ')
++
++ init_labeled_script_domtrans($1, dnsmasq_initrc_exec_t)
++')
++
++########################################
++##
+ ## Send dnsmasq a signal
+ ##
+ ##
+@@ -39,6 +58,26 @@
+ allow $1 dnsmasq_t:process signal;
+ ')
+
++
++########################################
++##
++## Send dnsmasq a signull
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++#
++interface(`dnsmasq_signull',`
++ gen_require(`
++ type dnsmasq_t;
++ ')
++
++ allow $1 dnsmasq_t:process signull;
++')
++
+ ########################################
+ ##
+ ## Send dnsmasq a kill signal.
+@@ -60,6 +99,44 @@
+
+ ########################################
+ ##
++## Delete dnsmasq pid files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++#
++interface(`dnsmasq_delete_pid_files',`
++ gen_require(`
++ type dnsmasq_var_run_t;
++ ')
++
++ delete_files_pattern($1, dnsmasq_var_run_t, dnsmasq_var_run_t)
++')
++
++########################################
++##
++## Read dnsmasq pid files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++#
++interface(`dnsmasq_read_pid_files',`
++ gen_require(`
++ type dnsmasq_var_run_t;
++ ')
++
++ read_files_pattern($1, dnsmasq_var_run_t, dnsmasq_var_run_t)
++')
++
++########################################
++##
+ ## All of the rules required to administrate
+ ## an dnsmasq environment
+ ##
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dnsmasq.te serefpolicy-3.6.1/policy/modules/services/dnsmasq.te
+--- nsaserefpolicy/policy/modules/services/dnsmasq.te 2008-11-18 18:57:20.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dnsmasq.te 2008-11-25 09:45:43.000000000 -0500
+@@ -73,17 +73,17 @@
+ fs_getattr_all_fs(dnsmasq_t)
+ fs_search_auto_mountpoints(dnsmasq_t)
+
++auth_use_nsswitch(dnsmasq_t)
++
+ logging_send_syslog_msg(dnsmasq_t)
+
+ miscfiles_read_localization(dnsmasq_t)
+
+-sysnet_read_config(dnsmasq_t)
+-
+ userdom_dontaudit_use_unpriv_user_fds(dnsmasq_t)
+ userdom_dontaudit_search_user_home_dirs(dnsmasq_t)
+
+ optional_policy(`
+- nis_use_ypbind(dnsmasq_t)
++ cron_manage_pid_files(dnsmasq_t)
+ ')
+
+ optional_policy(`
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dovecot.fc serefpolicy-3.6.1/policy/modules/services/dovecot.fc
+--- nsaserefpolicy/policy/modules/services/dovecot.fc 2008-11-11 16:13:47.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dovecot.fc 2008-11-25 09:45:43.000000000 -0500
+@@ -6,6 +6,7 @@
+ /etc/dovecot\.passwd.* gen_context(system_u:object_r:dovecot_passwd_t,s0)
+
+ /etc/pki/dovecot(/.*)? gen_context(system_u:object_r:dovecot_cert_t,s0)
++/etc/rc\.d/init\.d/dovecot -- gen_context(system_u:object_r:dovecot_initrc_exec_t,s0)
+
+ #
+ # /usr
+@@ -17,19 +18,22 @@
+
+ ifdef(`distro_debian', `
+ /usr/lib/dovecot/dovecot-auth -- gen_context(system_u:object_r:dovecot_auth_exec_t,s0)
++/usr/lib/dovecot/deliver -- gen_context(system_u:object_r:dovecot_deliver_exec_t,s0)
+ ')
+
+ ifdef(`distro_redhat', `
+ /usr/libexec/dovecot/dovecot-auth -- gen_context(system_u:object_r:dovecot_auth_exec_t,s0)
++/usr/libexec/dovecot/deliver -- gen_context(system_u:object_r:dovecot_deliver_exec_t,s0)
+ ')
+
+ #
+ # /var
+ #
+ /var/run/dovecot(-login)?(/.*)? gen_context(system_u:object_r:dovecot_var_run_t,s0)
+-# this is a hard link to /var/lib/dovecot/ssl-parameters.dat
+-/var/run/dovecot/login/ssl-parameters.dat gen_context(system_u:object_r:dovecot_var_lib_t,s0)
++/var/run/dovecot/login/ssl-parameters.dat -- gen_context(system_u:object_r:dovecot_var_lib_t,s0)
+
+ /var/lib/dovecot(/.*)? gen_context(system_u:object_r:dovecot_var_lib_t,s0)
+
++/var/log/dovecot\.log.* gen_context(system_u:object_r:dovecot_var_log_t,s0)
++
+ /var/spool/dovecot(/.*)? gen_context(system_u:object_r:dovecot_spool_t,s0)
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dovecot.if serefpolicy-3.6.1/policy/modules/services/dovecot.if
+--- nsaserefpolicy/policy/modules/services/dovecot.if 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/dovecot.if 2008-11-25 09:45:43.000000000 -0500
+@@ -21,7 +21,46 @@
+
+ ########################################
+ ##
+-## Do not audit attempts to delete dovecot lib files.
++## Connect to dovecot auth unix domain stream socket.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`dovecot_auth_stream_connect',`
++ gen_require(`
++ type dovecot_auth_t, dovecot_var_run_t;
++ ')
++
++ allow $1 dovecot_var_run_t:dir search;
++ allow $1 dovecot_var_run_t:sock_file write;
++ allow $1 dovecot_auth_t:unix_stream_socket connectto;
++')
++
++########################################
++##
++## Execute dovecot_deliver in the dovecot_deliver domain.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dovecot_domtrans_deliver',`
++ gen_require(`
++ type dovecot_deliver_t, dovecot_deliver_exec_t;
++ ')
++
++ domtrans_pattern($1, dovecot_deliver_exec_t, dovecot_deliver_t)
++')
++
++#######################################
++##
++## Do not audit attempts to d`elete dovecot lib files.
+ ##
+ ##
+ ##
+@@ -36,3 +75,60 @@
+
+ dontaudit $1 dovecot_var_lib_t:file unlink;
+ ')
++
++########################################
++##
++## All of the rules required to administrate
++## an dovecot environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## The role to be allowed to manage the dovecot domain.
++##
++##
++##
++#
++interface(`dovecot_admin',`
++ gen_require(`
++ type dovecot_t, dovecot_etc_t, dovecot_log_t;
++ type dovecot_spool_t, dovecot_var_lib_t;
++ type dovecot_var_run_t;
++
++ type dovecot_cert_t, dovecot_passwd_t;
++ type dovecot_initrc_exec_t;
++ ')
++
++ allow $1 dovecot_t:process { ptrace signal_perms };
++ ps_process_pattern($1, dovecot_t)
++
++ init_labeled_script_domtrans($1, dovecot_initrc_exec_t)
++ domain_system_change_exemption($1)
++ role_transition $2 dovecot_initrc_exec_t system_r;
++ allow $2 system_r;
++
++ files_list_etc($1)
++ admin_pattern($1, dovecot_etc_t)
++
++ logging_list_logs($1)
++ admin_pattern($1, dovecot_log_t)
++
++ files_list_spool($1)
++ admin_pattern($1, dovecot_spool_t)
++
++ files_list_var_lib($1)
++ admin_pattern($1, dovecot_var_lib_t)
++
++ files_list_pids($1)
++ admin_pattern($1, dovecot_var_run_t)
++
++ admin_pattern($1, dovecot_cert_t)
++
++ admin_pattern($1, dovecot_passwd_t)
++')
++
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/dovecot.te serefpolicy-3.6.1/policy/modules/services/dovecot.te
+--- nsaserefpolicy/policy/modules/services/dovecot.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/dovecot.te 2008-11-25 09:45:43.000000000 -0500
+@@ -15,12 +15,21 @@
+ domain_entry_file(dovecot_auth_t, dovecot_auth_exec_t)
+ role system_r types dovecot_auth_t;
+
++type dovecot_deliver_t;
++type dovecot_deliver_exec_t;
++domain_type(dovecot_deliver_t)
++domain_entry_file(dovecot_deliver_t, dovecot_deliver_exec_t)
++role system_r types dovecot_deliver_t;
++
+ type dovecot_cert_t;
+ files_type(dovecot_cert_t)
+
+ type dovecot_etc_t;
+ files_config_file(dovecot_etc_t)
+
++type dovecot_initrc_exec_t;
++init_script_file(dovecot_initrc_exec_t)
++
+ type dovecot_passwd_t;
+ files_type(dovecot_passwd_t)
+
+@@ -31,9 +40,15 @@
+ type dovecot_var_lib_t;
+ files_type(dovecot_var_lib_t)
+
++type dovecot_var_log_t;
++logging_log_file(dovecot_var_log_t)
++
+ type dovecot_var_run_t;
+ files_pid_file(dovecot_var_run_t)
+
++type dovecot_auth_tmp_t;
++files_tmp_file(dovecot_auth_tmp_t)
++
+ ########################################
+ #
+ # dovecot local policy
+@@ -58,6 +73,10 @@
+
+ can_exec(dovecot_t, dovecot_exec_t)
+
++# log files
++manage_files_pattern(dovecot_t, dovecot_var_log_t, dovecot_var_log_t)
++logging_log_filetrans(dovecot_t, dovecot_var_log_t, file)
++
+ manage_dirs_pattern(dovecot_t, dovecot_spool_t, dovecot_spool_t)
+ manage_files_pattern(dovecot_t, dovecot_spool_t, dovecot_spool_t)
+ manage_lnk_files_pattern(dovecot_t, dovecot_spool_t, dovecot_spool_t)
+@@ -85,6 +104,7 @@
+ dev_read_urand(dovecot_t)
+
+ fs_getattr_all_fs(dovecot_t)
++fs_getattr_all_dirs(dovecot_t)
+ fs_search_auto_mountpoints(dovecot_t)
+ fs_list_inotifyfs(dovecot_t)
+
+@@ -98,7 +118,7 @@
+ files_dontaudit_list_default(dovecot_t)
+ # Dovecot now has quota support and it uses getmntent() to find the mountpoints.
+ files_read_etc_runtime_files(dovecot_t)
+-files_getattr_all_mountpoints(dovecot_t)
++files_search_all_mountpoints(dovecot_t)
+
+ init_getattr_utmp(dovecot_t)
+
+@@ -120,7 +140,7 @@
+ mta_manage_spool(dovecot_t)
+
+ optional_policy(`
+- kerberos_use(dovecot_t)
++ kerberos_keytab_template(dovecot, dovecot_t)
+ ')
+
+ optional_policy(`
+@@ -140,25 +160,35 @@
+ # dovecot auth local policy
+ #
+
+-allow dovecot_auth_t self:capability { setgid setuid };
++allow dovecot_auth_t self:capability { chown dac_override setgid setuid };
+ allow dovecot_auth_t self:process signal_perms;
+ allow dovecot_auth_t self:fifo_file rw_fifo_file_perms;
+ allow dovecot_auth_t self:unix_dgram_socket create_socket_perms;
+ allow dovecot_auth_t self:unix_stream_socket create_stream_socket_perms;
+
+-allow dovecot_auth_t dovecot_t:unix_stream_socket { getattr accept read write ioctl };
++allow dovecot_auth_t dovecot_t:unix_stream_socket { connectto rw_stream_socket_perms };
+
+ allow dovecot_auth_t dovecot_passwd_t:file read_file_perms;
+
++manage_dirs_pattern(dovecot_auth_t, dovecot_auth_tmp_t, dovecot_auth_tmp_t)
++manage_files_pattern(dovecot_auth_t, dovecot_auth_tmp_t, dovecot_auth_tmp_t)
++files_tmp_filetrans(dovecot_auth_t, dovecot_auth_tmp_t, { file dir })
++
+ # Allow dovecot to create and read SSL parameters file
+ manage_files_pattern(dovecot_t, dovecot_var_lib_t, dovecot_var_lib_t)
+ files_search_var_lib(dovecot_t)
++files_read_var_symlinks(dovecot_t)
+
+ allow dovecot_auth_t dovecot_var_run_t:dir list_dir_perms;
++manage_sock_files_pattern(dovecot_auth_t, dovecot_var_run_t, dovecot_var_run_t)
++dovecot_auth_stream_connect(dovecot_auth_t)
+
+ kernel_read_all_sysctls(dovecot_auth_t)
+ kernel_read_system_state(dovecot_auth_t)
+
++logging_send_audit_msgs(dovecot_auth_t)
++logging_send_syslog_msg(dovecot_auth_t)
++
+ dev_read_urand(dovecot_auth_t)
+
+ auth_domtrans_chk_passwd(dovecot_auth_t)
+@@ -167,6 +197,7 @@
+ files_read_etc_files(dovecot_auth_t)
+ files_read_etc_runtime_files(dovecot_auth_t)
+ files_search_pids(dovecot_auth_t)
++files_read_usr_files(dovecot_auth_t)
+ files_read_usr_symlinks(dovecot_auth_t)
+ files_search_tmp(dovecot_auth_t)
+ files_read_var_lib_files(dovecot_t)
+@@ -182,5 +213,55 @@
+ ')
+
+ optional_policy(`
+- logging_send_syslog_msg(dovecot_auth_t)
++ mysql_search_db(dovecot_auth_t)
++ mysql_stream_connect(dovecot_auth_t)
++')
++
++optional_policy(`
++ nis_authenticate(dovecot_auth_t)
++')
++
++optional_policy(`
++ postfix_manage_private_sockets(dovecot_auth_t)
++ postfix_search_spool(dovecot_auth_t)
++')
++
++# for gssapi (kerberos)
++userdom_list_user_tmp(dovecot_auth_t)
++userdom_read_user_tmp_files(dovecot_auth_t)
++userdom_read_user_tmp_symlinks(dovecot_auth_t)
++
++########################################
++#
++# dovecot deliver local policy
++#
++allow dovecot_deliver_t self:unix_dgram_socket create_socket_perms;
++
++allow dovecot_deliver_t dovecot_etc_t:file read_file_perms;
++allow dovecot_deliver_t dovecot_var_run_t:dir list_dir_perms;
++
++kernel_read_all_sysctls(dovecot_deliver_t)
++kernel_read_system_state(dovecot_deliver_t)
++
++files_read_etc_files(dovecot_deliver_t)
++files_read_etc_runtime_files(dovecot_deliver_t)
++
++auth_use_nsswitch(dovecot_deliver_t)
++
++logging_send_syslog_msg(dovecot_deliver_t)
++
++miscfiles_read_localization(dovecot_deliver_t)
++
++dovecot_auth_stream_connect(dovecot_deliver_t)
++
++userdom_manage_user_home_content_dirs(dovecot_t)
++userdom_manage_user_home_content_files(dovecot_t)
++userdom_manage_user_home_content_symlinks(dovecot_t)
++userdom_manage_user_home_content_pipes(dovecot_t)
++userdom_manage_user_home_content_sockets(dovecot_t)
++userdom_user_home_dir_filetrans_user_home_content(dovecot_t, { dir file lnk_file fifo_file sock_file })
++
++optional_policy(`
++ mta_manage_spool(dovecot_deliver_t)
+ ')
++
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/exim.if serefpolicy-3.6.1/policy/modules/services/exim.if
+--- nsaserefpolicy/policy/modules/services/exim.if 2008-08-07 11:15:11.000000000 -0400
++++ serefpolicy-3.6.1/policy/modules/services/exim.if 2008-11-25 09:45:43.000000000 -0500
+@@ -97,6 +97,26 @@
+
+ ########################################
+ ##
++## Allow the specified domain to manage exim's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`exim_manage_log',`
++ gen_require(`
++ type exim_log_t;
++ ')
++
++ manage_files_pattern($1, exim_log_t, exim_log_t)
++ logging_search_logs($1)
++')
++
++########################################
++##
+ ## Allow the specified domain to append
+ ## exim log files.
+ ##
+@@ -154,3 +174,23 @@
+ manage_files_pattern($1, exim_spool_t, exim_spool_t)
+ files_search_spool($1)
+ ')
++
++########################################
++##
++## Create, read, write, and delete
++## exim spool dirs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`exim_manage_spool_dirs',`
++ gen_require(`
++ type exim_spool_t;
++ ')
++
++ manage_dirs_pattern($1, exim_spool_t, exim_spool_t)
++ files_search_spool($1)
++')
+diff -b -B --ignore-all-space --exclude-from=exclude -N -u -r nsaserefpolicy/policy/modules/services/exim.te serefpolicy-3.6.1/policy/modules/services/exim.te
+--- nsaserefpolicy/policy/modules/services/exim.te 2008-11-11 16:13:46.000000000 -0500
++++ serefpolicy-3.6.1/policy/modules/services/exim.te 2008-11-25 09:45:43.000000000 -0500
+@@ -21,9 +21,20 @@
+ ##
+ gen_tunable(exim_manage_user_files, false)
+
++##