Written by: Martin Orr
Label /etc/wpa_supplicant scripts as wpa_cli_exec_t
This is needed because hal runs /etc/wpa_supplicant/action_wpa.sh
Maybe action_wpa.sh should be the only one so labelled (and isn't hal going away?)
A lot of extra rules are needed for ifupdown.sh, which used to run as initrc_t
Original message looked like this:
Mar 27 22:53:16 caligula kernel: type=1400 audit(1238194396.121:6): avc: denied { read } for pid=20977 comm="action_wpa" name="wpa_supplicant" dev=dm-0 ino=1525131 scontext=system_u:system_r:hald_t:s0 tcontext=system_u:object_r:NetworkManager_var_run_t:s0 tclass=dir
Index: policy/modules/services/networkmanager.fc
===================================================================
--- policy/modules/services/networkmanager.fc.orig
+++ policy/modules/services/networkmanager.fc
@@ -1,4 +1,5 @@
/etc/rc\.d/init\.d/wicd -- gen_context(system_u:object_r:NetworkManager_initrc_exec_t,s0)
+/etc/wpa_supplicant/.*\.sh -- gen_context(system_u:object_r:wpa_cli_exec_t,s0)
/etc/NetworkManager/dispatcher\.d(/.*) gen_context(system_u:object_r:NetworkManager_initrc_exec_t,s0)
Index: policy/modules/services/hal.te
===================================================================
--- policy/modules/services/hal.te.orig
+++ policy/modules/services/hal.te
@@ -289,6 +289,10 @@
')
optional_policy(`
+ networkmanager_cli_domtrans(hald_t)
+')
+
+optional_policy(`
ntp_domtrans(hald_t)
')
Index: policy/modules/services/networkmanager.if
===================================================================
--- policy/modules/services/networkmanager.if.orig
+++ policy/modules/services/networkmanager.if
@@ -191,3 +191,23 @@
files_search_pids($1)
allow $1 NetworkManager_var_run_t:file read_file_perms;
')
+
+########################################
+##
+## Execute wpa commandline scripts with a domain transition.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`networkmanager_cli_domtrans',`
+ gen_require(`
+ type wpa_cli_t, wpa_cli_exec_t;
+ ')
+
+ corecmd_search_bin($1)
+ domtrans_pattern($1, wpa_cli_exec_t, wpa_cli_t)
+')
+
Index: policy/modules/services/networkmanager.te
===================================================================
--- policy/modules/services/networkmanager.te.orig
+++ policy/modules/services/networkmanager.te
@@ -274,17 +274,39 @@
allow wpa_cli_t self:capability dac_override;
allow wpa_cli_t self:unix_dgram_socket create_socket_perms;
+allow wpa_cli_t NetworkManager_t:process signal_perms;
allow wpa_cli_t NetworkManager_t:unix_dgram_socket sendto;
+allow wpa_cli_t self:fifo_file rw_fifo_file_perms;
+
+read_files_pattern(wpa_cli_t, NetworkManager_t, NetworkManager_t)
+read_lnk_files_pattern(wpa_cli_t, NetworkManager_t, NetworkManager_t)
+
manage_sock_files_pattern(wpa_cli_t, NetworkManager_tmp_t, NetworkManager_tmp_t)
files_tmp_filetrans(wpa_cli_t, NetworkManager_tmp_t, sock_file)
list_dirs_pattern(wpa_cli_t, NetworkManager_var_run_t, NetworkManager_var_run_t)
+manage_files_pattern(wpa_cli_t, NetworkManager_var_run_t, NetworkManager_var_run_t)
rw_sock_files_pattern(wpa_cli_t, NetworkManager_var_run_t, NetworkManager_var_run_t)
+files_pid_filetrans(wpa_cli_t, NetworkManager_var_run_t, file)
+
+can_exec(wpa_cli_t, wpa_cli_exec_t)
+
+corecmd_exec_bin(wpa_cli_t)
+corecmd_exec_shell(wpa_cli_t)
init_dontaudit_use_fds(wpa_cli_t)
init_use_script_ptys(wpa_cli_t)
+logging_search_logs(wpa_cli_t)
+
miscfiles_read_localization(wpa_cli_t)
term_dontaudit_use_console(wpa_cli_t)
+
+networkmanager_domtrans(wpa_cli_t)
+
+optional_policy(`
+ hal_write_log(wpa_cli_t)
+ hal_dontaudit_read_pid_files(wpa_cli_t)
+')