[refpolicy] [PATCH] Added support for python-support

Manoj Srivastava srivasta at golden-gryphon.com
Tue Jul 14 14:35:15 CDT 2009


From: Manoj Srivastava <srivasta at debian.org>

Debian uses the python-support module infrastructure to conditionally
byte compile python files during installation. This commit adds
support for the package, which is critical for Python library package
installation on Debian machines.

Signed-off-by: Russell Coker <russell at coker.com.au>
Acked-By: Manoj Srivastava <srivasta at debian.org>
---
 policy/modules/admin/apt.te            |    4 ++
 policy/modules/system/pythonsupport.fc |    2 +
 policy/modules/system/pythonsupport.if |   55 ++++++++++++++++++++++++++++++++
 policy/modules/system/pythonsupport.te |   44 +++++++++++++++++++++++++
 policy/modules/system/selinuxutil.te   |   10 ++++++
 policy/modules/system/userdomain.if    |    4 ++
 6 files changed, 119 insertions(+), 0 deletions(-)
 create mode 100644 policy/modules/system/pythonsupport.fc
 create mode 100644 policy/modules/system/pythonsupport.if
 create mode 100644 policy/modules/system/pythonsupport.te

diff --git a/policy/modules/admin/apt.te b/policy/modules/admin/apt.te
index c79157a..1ffa5b3 100644
--- a/policy/modules/admin/apt.te
+++ b/policy/modules/admin/apt.te
@@ -127,6 +127,10 @@ userdom_use_user_terminals(apt_t)
 #')
 
 optional_policy(`
+	pythonsupport_domtrans(apt_t)
+')
+
+optional_policy(`
 	# dpkg interaction
 	dpkg_read_db(apt_t)
 	dpkg_domtrans(apt_t)
diff --git a/policy/modules/system/pythonsupport.fc b/policy/modules/system/pythonsupport.fc
new file mode 100644
index 0000000..95a0998
--- /dev/null
+++ b/policy/modules/system/pythonsupport.fc
@@ -0,0 +1,2 @@
+/usr/sbin/update-python-modules	--	gen_context(system_u:object_r:pythoncompile_exec_t,s0)
+/var/lib/python-support(/.*)?		gen_context(system_u:object_r:python_compiled_t,s0)
diff --git a/policy/modules/system/pythonsupport.if b/policy/modules/system/pythonsupport.if
new file mode 100644
index 0000000..f5b154b
--- /dev/null
+++ b/policy/modules/system/pythonsupport.if
@@ -0,0 +1,55 @@
+## <summary>Support for precompiling python modules</summary>
+## <desc>
+##	<p>
+##		Debians python-support will precompile installed python
+##		packages for installed python versions. This way,
+##		the python2.3-foobar and python2.4-foobar (and 2.5) packages
+##		could be merged into one python-foobar while keeping the
+##		dependency information useful.
+##	</p>
+## </desc>
+#
+
+########################################
+## <summary>
+##	Execute the python-support utility to precompile modules.
+## </summary>
+## <param name="domain">
+##	<summary>
+##	Domain allowed to transition.
+##	</summary>
+## </param>
+#
+interface(`pythonsupport_domtrans',`
+	gen_require(`
+		type pythoncompile_t, pythoncompile_exec_t;
+	')
+
+	domain_auto_trans($1,pythoncompile_exec_t,pythoncompile_t)
+
+	allow $1 pythoncompile_t:fd use;
+	allow pythoncompile_t $1:fd use;
+	allow $1 pythoncompile_t:fifo_file rw_file_perms;
+	allow $1 pythoncompile_t:process sigchld;
+')
+
+########################################
+## <summary>
+##	Read compiled python modules
+## </summary>
+## <param name="domain">
+##	<summary>
+##	Domain allowed to read the compiled python modules.
+##	</summary>
+## </param>
+#
+interface(`pythonsupport_compiled_read',`
+	gen_require(`
+		type python_compiled_t;
+	')
+
+	files_search_var_lib($1)
+	allow $1 python_compiled_t:dir list_dir_perms;
+	allow $1 python_compiled_t:file read_file_perms;
+	allow $1 python_compiled_t:lnk_file read_lnk_file_perms;
+')
diff --git a/policy/modules/system/pythonsupport.te b/policy/modules/system/pythonsupport.te
new file mode 100644
index 0000000..69c1bc6
--- /dev/null
+++ b/policy/modules/system/pythonsupport.te
@@ -0,0 +1,44 @@
+policy_module(pythonsupport,0.0.1)
+
+########################################
+#
+# Declarations
+#
+
+type pythoncompile_t;
+type pythoncompile_exec_t;
+domain_type(pythoncompile_t)
+domain_entry_file(pythoncompile_t, pythoncompile_exec_t)
+
+role system_r types pythoncompile_t;
+role sysadm_r types pythoncompile_t;
+
+type python_compiled_t;
+files_type(python_compiled_t)
+
+########################################
+#
+# python-support local policy
+#
+
+kernel_read_system_state(pythoncompile_t)
+kernel_read_kernel_sysctls(pythoncompile_t)
+
+corecmd_exec_bin(pythoncompile_t)
+corecmd_exec_sbin(pythoncompile_t)
+
+files_read_etc_files(pythoncompile_t)
+files_read_usr_files(pythoncompile_t)
+
+libs_use_ld_so(pythoncompile_t)
+libs_use_shared_libs(pythoncompile_t)
+libs_use_lib_files(pythoncompile_t)
+
+miscfiles_read_localization(pythoncompile_t)
+
+
+# create compiled python modules
+allow pythoncompile_t python_compiled_t:dir manage_dir_perms;
+allow pythoncompile_t python_compiled_t:file manage_file_perms;
+allow pythoncompile_t python_compiled_t:lnk_file manage_lnk_file_perms;
+files_var_lib_filetrans(pythoncompile_t, python_compiled_t, dir)
diff --git a/policy/modules/system/selinuxutil.te b/policy/modules/system/selinuxutil.te
index f706ef0..90e0245 100644
--- a/policy/modules/system/selinuxutil.te
+++ b/policy/modules/system/selinuxutil.te
@@ -425,6 +425,7 @@ allow semanage_t self:capability { dac_override audit_write };
 allow semanage_t self:unix_stream_socket create_stream_socket_perms;
 allow semanage_t self:unix_dgram_socket create_socket_perms;
 allow semanage_t self:netlink_audit_socket { create_netlink_socket_perms nlmsg_relay };
+fs_getattr_xattr_fs(semanage_t)
 
 allow semanage_t policy_config_t:file rw_file_perms;
 
@@ -432,6 +433,10 @@ allow semanage_t semanage_tmp_t:dir manage_dir_perms;
 allow semanage_t semanage_tmp_t:file manage_file_perms;
 files_tmp_filetrans(semanage_t, semanage_tmp_t, { file dir })
 
+ifdef(`targeted_policy',`
+	allow semanage_t initrc_t:fd use;
+')
+
 kernel_read_system_state(semanage_t)
 kernel_read_kernel_sysctls(semanage_t)
 
@@ -449,6 +454,7 @@ files_list_pids(semanage_t)
 mls_file_write_all_levels(semanage_t)
 mls_file_read_all_levels(semanage_t)
 
+selinux_get_fs_mount(semanage_t)
 selinux_validate_context(semanage_t)
 selinux_get_enforce_mode(semanage_t)
 selinux_getattr_fs(semanage_t)
@@ -499,6 +505,10 @@ ifdef(`enable_mls',`
 	userdom_read_user_tmp_files(semanage_t)
 ')
 
+optional_policy(`
+	pythonsupport_compiled_read(semanage_t)
+')
+
 ########################################
 #
 # Setfiles local policy
diff --git a/policy/modules/system/userdomain.if b/policy/modules/system/userdomain.if
index 8634334..a30aeee 100644
--- a/policy/modules/system/userdomain.if
+++ b/policy/modules/system/userdomain.if
@@ -664,6 +664,10 @@ template(`userdom_common_user_template',`
 	')
 
 	optional_policy(`
+		pythonsupport_compiled_read($1_t)
+	')
+
+	optional_policy(`
 		pcscd_read_pub_files($1_t)
 		pcscd_stream_connect($1_t)
 	')
-- 
1.6.3.3



More information about the refpolicy mailing list