1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
From: =?UTF-8?q?Mika=20Pfl=C3=BCger?= <debian@mikapflueger.de>
Date: Fri, 2 Mar 2012 03:21:42 +0100
Subject: mysqld policy fixes: * Allow mysqld_safe_t to send messages to
syslogd * Allow mysqld_t to run shell scripts (shell_exec_t and
bin_t) * Add interface to execute mysqld in its own domain for use
in userdomain
---
policy/modules/services/mysql.fc | 2 ++
policy/modules/services/mysql.if | 20 ++++++++++++++++++++
policy/modules/services/mysql.te | 6 +++++-
policy/modules/system/userdomain.if | 4 ++++
4 files changed, 31 insertions(+), 1 deletions(-)
Index: refpolicy-2.20110726/policy/modules/services/mysql.fc
===================================================================
--- refpolicy-2.20110726.orig/policy/modules/services/mysql.fc 2012-06-21 23:34:14.161996253 +1000
+++ refpolicy-2.20110726/policy/modules/services/mysql.fc 2012-06-21 23:36:11.775098907 +1000
@@ -16,6 +16,8 @@
/usr/libexec/mysqld -- gen_context(system_u:object_r:mysqld_exec_t,s0)
/usr/sbin/mysqld(-max)? -- gen_context(system_u:object_r:mysqld_exec_t,s0)
+/usr/sbin/ndbd -- gen_context(system_u:object_r:mysqld_exec_t,s0)
+/usr/bin/mysql_upgrade -- gen_context(system_u:object_r:mysqld_exec_t,s0)
/usr/sbin/mysqlmanager -- gen_context(system_u:object_r:mysqlmanagerd_exec_t,s0)
#
Index: refpolicy-2.20110726/policy/modules/services/mysql.if
===================================================================
--- refpolicy-2.20110726.orig/policy/modules/services/mysql.if 2012-06-21 23:34:14.161996253 +1000
+++ refpolicy-2.20110726/policy/modules/services/mysql.if 2012-06-21 23:36:11.775098907 +1000
@@ -353,3 +353,23 @@
admin_pattern($1, mysqld_tmp_t)
')
+
+########################################
+## <summary>
+## Execute mysqld in the caller domain.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+## <rolecap/>
+#
+interface(`mysqld_exec',`
+ gen_require(`
+ type mysqld_exec_t;
+ ')
+
+ corecmd_search_bin($1)
+ can_exec($1, mysqld_exec_t)
+')
Index: refpolicy-2.20110726/policy/modules/services/mysql.te
===================================================================
--- refpolicy-2.20110726.orig/policy/modules/services/mysql.te 2012-06-21 23:34:14.161996253 +1000
+++ refpolicy-2.20110726/policy/modules/services/mysql.te 2012-06-21 23:36:11.775098907 +1000
@@ -58,10 +58,13 @@
allow mysqld_t self:process { setsched getsched setrlimit signal_perms rlimitinh };
allow mysqld_t self:fifo_file rw_fifo_file_perms;
allow mysqld_t self:shm create_shm_perms;
-allow mysqld_t self:unix_stream_socket create_stream_socket_perms;
+allow mysqld_t self:unix_stream_socket { create_stream_socket_perms connectto };
allow mysqld_t self:tcp_socket create_stream_socket_perms;
allow mysqld_t self:udp_socket create_socket_perms;
+corecmd_exec_shell(mysqld_t)
+corecmd_exec_bin(mysqld_t)
+
manage_dirs_pattern(mysqld_t, mysqld_db_t, mysqld_db_t)
manage_files_pattern(mysqld_t, mysqld_db_t, mysqld_db_t)
manage_lnk_files_pattern(mysqld_t, mysqld_db_t, mysqld_db_t)
@@ -180,6 +183,7 @@
files_dontaudit_getattr_all_dirs(mysqld_safe_t)
logging_log_filetrans(mysqld_safe_t, mysqld_log_t, file)
+logging_send_syslog_msg(mysqld_safe_t)
hostname_exec(mysqld_safe_t)
Index: refpolicy-2.20110726/policy/modules/system/userdomain.if
===================================================================
--- refpolicy-2.20110726.orig/policy/modules/system/userdomain.if 2012-06-21 23:35:43.566813277 +1000
+++ refpolicy-2.20110726/policy/modules/system/userdomain.if 2012-06-21 23:36:11.779098943 +1000
@@ -985,6 +985,10 @@
optional_policy(`
setroubleshoot_stream_connect($1_t)
')
+
+ optional_policy(`
+ mysqld_exec($1_t)
+ ')
')
#######################################
|