[selinux-policy: 613/3172] add dbus
Daniel J Walsh
dwalsh at fedoraproject.org
Thu Oct 7 19:57:39 UTC 2010
commit 0c3d170578199a983deef2c33ed6d0c6a620ee54
Author: Chris PeBenito <cpebenito at tresys.com>
Date: Wed Aug 31 20:58:12 2005 +0000
add dbus
refpolicy/Changelog | 1 +
refpolicy/policy/modules/admin/updfstab.te | 7 +-
refpolicy/policy/modules/services/dbus.fc | 5 +
refpolicy/policy/modules/services/dbus.if | 150 +++++++++++++++++++++++++
refpolicy/policy/modules/services/dbus.te | 134 ++++++++++++++++++++++
refpolicy/policy/modules/system/hotplug.te | 6 +-
refpolicy/policy/modules/system/init.te | 2 +
refpolicy/policy/modules/system/udev.te | 5 +-
refpolicy/policy/modules/system/userdomain.if | 6 +-
9 files changed, 308 insertions(+), 8 deletions(-)
---
diff --git a/refpolicy/Changelog b/refpolicy/Changelog
index 643aded..74107e3 100644
--- a/refpolicy/Changelog
+++ b/refpolicy/Changelog
@@ -2,6 +2,7 @@
or templates on the module page.
- Added policies:
comsat
+ dbus
* Fri Aug 26 2005 Chris PeBenito <selinux at tresys.com> - 20050826
- Add Makefile support for building loadable modules.
diff --git a/refpolicy/policy/modules/admin/updfstab.te b/refpolicy/policy/modules/admin/updfstab.te
index 7b59329..7998aa2 100644
--- a/refpolicy/policy/modules/admin/updfstab.te
+++ b/refpolicy/policy/modules/admin/updfstab.te
@@ -93,6 +93,10 @@ optional_policy(`authlogin.te',`
auth_domtrans_pam_console(updfstab_t)
')
+optional_policy(`dbus.te',`
+ dbus_system_bus_client_template(updfstab,updfstab_t)
+')
+
optional_policy(`modutils.te',`
modutils_read_module_conf(updfstab_t)
modutils_exec_insmod(updfstab_t)
@@ -112,8 +116,5 @@ optional_policy(`udev.te',`
')
ifdef(`TODO',`
-ifdef(`dbusd.te', `
-dbusd_client(system, updfstab)
allow updfstab_t system_dbusd_t:dbus { send_msg };
-')
') dnl end TODO
diff --git a/refpolicy/policy/modules/services/dbus.fc b/refpolicy/policy/modules/services/dbus.fc
new file mode 100644
index 0000000..1479093
--- /dev/null
+++ b/refpolicy/policy/modules/services/dbus.fc
@@ -0,0 +1,5 @@
+/etc/dbus-1(/.*)? context_template(system_u:object_r:etc_dbusd_t,s0)
+
+/usr/bin/dbus-daemon(-1)? -- context_template(system_u:object_r:system_dbusd_exec_t,s0)
+
+/var/run/dbus(/.*)? context_template(system_u:object_r:system_dbusd_var_run_t,s0)
diff --git a/refpolicy/policy/modules/services/dbus.if b/refpolicy/policy/modules/services/dbus.if
new file mode 100644
index 0000000..efe31f0
--- /dev/null
+++ b/refpolicy/policy/modules/services/dbus.if
@@ -0,0 +1,150 @@
+## <summary>Desktop messaging bus</summary>
+
+#######################################
+## <summary>
+## The per user domain template for the dbus module.
+## </summary>
+## <desc>
+## <p>
+## This template creates a derived domain which is
+## used for the user dbus.
+## </p>
+## <p>
+## This template is invoked automatically for each user, and
+## generally does not need to be invoked directly
+## by policy writers.
+## </p>
+## </desc>
+## <param name="userdomain_prefix">
+## The prefix of the user domain (e.g., user
+## is the prefix for user_t).
+## </param>
+## <param name="user_domain">
+## The type of the user domain.
+## </param>
+## <param name="user_role">
+## The role associated with the user domain.
+## </param>
+#
+template(`dbus_per_userdomain_template',`
+ ##############################
+ #
+ # Delcarations
+ #
+ type $1_dbusd_t;
+ domain_type($1_dbusd_t)
+ role $3 types $1_dbusd_t;
+
+ type $1_dbusd_tmp_t;
+ files_tmp_file($1_dbusd_tmp_t)
+
+ ##############################
+ #
+ # Local policy
+ #
+
+ allow $1_dbusd_t self:process { getattr sigkill signal };
+ allow $1_dbusd_t self:dbus { send_msg acquire_svc };
+ allow $1_dbusd_t self:unix_stream_socket create_stream_socket_perms;
+ allow $1_dbusd_t self:unix_dgram_socket create_socket_perms;
+ # Receive notifications of policy reloads and enforcing status changes.
+ allow $1_dbusd_t self:netlink_selinux_socket { create bind read };
+
+ allow $1_dbusd_t dbusd_etc_t:dir r_dir_perms;
+ allow $1_dbusd_t dbusd_etc_t:file r_file_perms;
+ allow $1_dbusd_t dbusd_etc_t:lnk_file { getattr read };
+
+ allow $1_dbusd_t $1_dbusd_tmp_t:dir create_dir_perms;
+ allow $1_dbusd_t $1_dbusd_tmp_t:file create_file_perms;
+ files_create_tmp_files($1_dbusd_t, $1_dbusd_tmp_t, { file dir })
+
+ domain_auto_trans($2, system_dbusd_exec_t, $1_dbusd_t)
+ allow $2 $1_dbusd_t:fd use;
+ allow $1_dbusd_t $2:fd use;
+ allow $1_dbusd_t $2:fifo_file rw_file_perms;
+ allow $1_dbusd_t $2:process sigchld;
+
+ allow $2 $1_dbusd_t:process { sigkill signal };
+
+ kernel_read_system_state($1_dbusd_t)
+ kernel_read_kernel_sysctl($1_dbusd_t)
+
+ dev_read_urand($1_dbusd_t)
+
+ selinux_get_fs_mount($1_dbusd_t)
+ selinux_validate_context($1_dbusd_t)
+ selinux_compute_access_vector($1_dbusd_t)
+ selinux_compute_create_context($1_dbusd_t)
+ selinux_compute_relabel_context($1_dbusd_t)
+ selinux_compute_user_contexts($1_dbusd_t)
+
+ corecmd_list_bin($1_dbusd_t)
+ corecmd_read_bin_symlink($1_dbusd_t)
+ corecmd_read_bin_file($1_dbusd_t)
+ corecmd_read_bin_pipe($1_dbusd_t)
+ corecmd_read_bin_socket($1_dbusd_t)
+ corecmd_list_sbin($1_dbusd_t)
+ corecmd_read_sbin_symlink($1_dbusd_t)
+ corecmd_read_sbin_file($1_dbusd_t)
+ corecmd_read_sbin_pipe($1_dbusd_t)
+ corecmd_read_sbin_socket($1_dbusd_t)
+
+ files_read_etc_files($1_dbusd_t)
+ files_list_home($1_dbusd_t)
+ files_read_usr_files($1_dbusd_t)
+ files_dontaudit_search_var($1_dbusd_t)
+
+ libs_use_ld_so($1_dbusd_t)
+ libs_use_shared_libs($1_dbusd_t)
+
+ logging_send_syslog_msg($1_dbusd_t)
+
+ miscfiles_read_localization($1_dbusd_t)
+
+ seutil_read_config($1_dbusd_t)
+ seutil_read_default_contexts($1_dbusd_t)
+
+ tunable_policy(`read_default_t',`
+ files_list_default($1_dbusd_t)
+ files_read_default_files($1_dbusd_t)
+ files_read_default_symlinks($1_dbusd_t)
+ files_read_default_sockets($1_dbusd_t)
+ files_read_default_pipes($1_dbusd_t)
+ ')
+
+ optional_policy(`authlogin.te',`
+ auth_read_pam_console_data($1_dbusd_t)
+ ')
+
+ optional_policy(`nscd.te',`
+ nscd_use_socket($1_dbusd_t)
+ ')
+')
+
+#######################################
+## <summary>
+## Template for creating connections to
+## the system DBUS.
+## </summary>
+## <param name="domain_prefix">
+## The prefix of the domain (e.g., user
+## is the prefix for user_t).
+## </param>
+## <param name="domain">
+## The type of the domain.
+## </param>
+#
+template(`dbus_system_bus_client_template',`
+
+ type $1_dbusd_system_t;
+ type_change $2 system_dbusd_t:dbus $1_dbusd_system_t;
+
+ # SE-DBus specific permissions
+ allow $1_dbusd_system_t { system_dbusd_t self }:dbus send_msg;
+
+ # For connecting to the bus
+ files_search_pids($2)
+ allow $2 system_dbusd_var_run_t:dir search;
+ allow $2 system_dbusd_var_run_t:sock_file write;
+ allow $2 system_dbusd_t:unix_stream_socket connectto;
+')
diff --git a/refpolicy/policy/modules/services/dbus.te b/refpolicy/policy/modules/services/dbus.te
new file mode 100644
index 0000000..f2c4688
--- /dev/null
+++ b/refpolicy/policy/modules/services/dbus.te
@@ -0,0 +1,134 @@
+
+policy_module(dbus,1.0)
+
+##############################
+#
+# Delcarations
+#
+
+type dbusd_etc_t alias etc_dbusd_t;
+files_type(dbusd_etc_t)
+
+type system_dbusd_t alias dbusd_t;
+type system_dbusd_exec_t;
+init_daemon_domain(system_dbusd_t,system_dbusd_exec_t)
+
+type system_dbusd_tmp_t;
+files_tmp_file(system_dbusd_tmp_t)
+
+type system_dbusd_var_run_t;
+files_pid_file(system_dbusd_var_run_t)
+
+##############################
+#
+# Local policy
+#
+
+# dac_override: /var/run/dbus is owned by messagebus on Debian
+# cjp: dac_override should probably go in a distro_debian
+allow system_dbusd_t self:capability { dac_override setgid setuid };
+dontaudit system_dbusd_t self:capability sys_tty_config;
+allow system_dbusd_t self:process getattr;
+allow system_dbusd_t self:dbus { send_msg acquire_svc };
+allow system_dbusd_t self:unix_stream_socket create_stream_socket_perms;
+allow system_dbusd_t self:unix_dgram_socket create_socket_perms;
+# Receive notifications of policy reloads and enforcing status changes.
+allow system_dbusd_t self:netlink_selinux_socket { create bind read };
+
+allow system_dbusd_t dbusd_etc_t:dir r_dir_perms;
+allow system_dbusd_t dbusd_etc_t:file r_file_perms;
+allow system_dbusd_t dbusd_etc_t:lnk_file { getattr read };
+
+allow system_dbusd_t system_dbusd_tmp_t:dir create_dir_perms;
+allow system_dbusd_t system_dbusd_tmp_t:file create_file_perms;
+files_create_tmp_files(system_dbusd_t, system_dbusd_tmp_t, { file dir })
+
+allow system_dbusd_t system_dbusd_var_run_t:file create_file_perms;
+allow system_dbusd_t system_dbusd_var_run_t:sock_file create_file_perms;
+files_create_pid(system_dbusd_t,system_dbusd_var_run_t)
+
+kernel_read_system_state(system_dbusd_t)
+kernel_read_kernel_sysctl(system_dbusd_t)
+
+dev_read_urand(system_dbusd_t)
+dev_read_sysfs(system_dbusd_t)
+
+fs_getattr_all_fs(system_dbusd_t)
+fs_search_auto_mountpoints(system_dbusd_t)
+
+selinux_get_fs_mount(system_dbusd_t)
+selinux_validate_context(system_dbusd_t)
+selinux_compute_access_vector(system_dbusd_t)
+selinux_compute_create_context(system_dbusd_t)
+selinux_compute_relabel_context(system_dbusd_t)
+selinux_compute_user_contexts(system_dbusd_t)
+
+term_dontaudit_use_console(system_dbusd_t)
+
+corecmd_list_bin(system_dbusd_t)
+corecmd_read_bin_symlink(system_dbusd_t)
+corecmd_read_bin_file(system_dbusd_t)
+corecmd_read_bin_pipe(system_dbusd_t)
+corecmd_read_bin_socket(system_dbusd_t)
+corecmd_list_sbin(system_dbusd_t)
+corecmd_read_sbin_symlink(system_dbusd_t)
+corecmd_read_sbin_file(system_dbusd_t)
+corecmd_read_sbin_pipe(system_dbusd_t)
+corecmd_read_sbin_socket(system_dbusd_t)
+
+domain_use_wide_inherit_fd(system_dbusd_t)
+
+files_read_etc_files(system_dbusd_t)
+files_list_home(system_dbusd_t)
+files_read_usr_files(system_dbusd_t)
+
+init_use_fd(system_dbusd_t)
+init_use_script_pty(system_dbusd_t)
+
+libs_use_ld_so(system_dbusd_t)
+libs_use_shared_libs(system_dbusd_t)
+
+logging_send_syslog_msg(system_dbusd_t)
+
+miscfiles_read_localization(system_dbusd_t)
+
+seutil_read_config(system_dbusd_t)
+seutil_read_default_contexts(system_dbusd_t)
+seutil_sigchld_newrole(system_dbusd_t)
+
+userdom_dontaudit_use_unpriv_user_fd(system_dbusd_t)
+userdom_dontaudit_search_sysadm_home_dir(system_dbusd_t)
+
+ifdef(`targeted_policy', `
+ term_dontaudit_use_unallocated_tty(system_dbusd_t)
+ term_dontaudit_use_generic_pty(system_dbusd_t)
+ files_dontaudit_read_root_file(system_dbusd_t)
+')
+
+tunable_policy(`read_default_t',`
+ files_list_default(system_dbusd_t)
+ files_read_default_files(system_dbusd_t)
+ files_read_default_symlinks(system_dbusd_t)
+ files_read_default_sockets(system_dbusd_t)
+ files_read_default_pipes(system_dbusd_t)
+')
+
+optional_policy(`authlogin.te',`
+ auth_read_pam_console_data(system_dbusd_t)
+')
+
+optional_policy(`nis.te',`
+ nis_use_ypbind(system_dbusd_t)
+')
+
+optional_policy(`nscd.te',`
+ nscd_use_socket(system_dbusd_t)
+')
+
+optional_policy(`rhgb.te',`
+ rhgb_domain(system_dbusd_t)
+')
+
+optional_policy(`udev.te', `
+ udev_read_db(system_dbusd_t)
+')
diff --git a/refpolicy/policy/modules/system/hotplug.te b/refpolicy/policy/modules/system/hotplug.te
index 88b9a5b..6a69a96 100644
--- a/refpolicy/policy/modules/system/hotplug.te
+++ b/refpolicy/policy/modules/system/hotplug.te
@@ -130,6 +130,10 @@ optional_policy(`consoletype.te',`
consoletype_domtrans(hotplug_t)
')
+optional_policy(`dbus.te',`
+ dbus_system_bus_client_template(hotplug,hotplug_t)
+')
+
optional_policy(`fstools.te',`
fstools_domtrans(hotplug_t)
')
@@ -182,8 +186,6 @@ rhgb_domain(hotplug_t)
allow kernel_t hotplug_etc_t:dir search;
-dbusd_client(system, hotplug)
-
# for ps
dontaudit hotplug_t domain:dir { getattr search };
dontaudit hotplug_t { init_t kernel_t }:file read;
diff --git a/refpolicy/policy/modules/system/init.te b/refpolicy/policy/modules/system/init.te
index 0e3d06a..3fa5e6b 100644
--- a/refpolicy/policy/modules/system/init.te
+++ b/refpolicy/policy/modules/system/init.te
@@ -481,6 +481,8 @@ ifdef(`TODO',`
# Set device ownerships/modes.
allow initrc_t xconsole_device_t:fifo_file setattr;
+allow initrc_t system_dbusd_t:dbus { send_msg acquire_svc };
+
#
# These rules are here to allow init scripts to su
#
diff --git a/refpolicy/policy/modules/system/udev.te b/refpolicy/policy/modules/system/udev.te
index e0169f3..d4c2038 100644
--- a/refpolicy/policy/modules/system/udev.te
+++ b/refpolicy/policy/modules/system/udev.te
@@ -148,6 +148,10 @@ optional_policy(`consoletype.te',`
consoletype_exec(udev_t)
')
+optional_policy(`dbus.te',`
+ dbus_system_bus_client_template(udev,udev_t)
+')
+
optional_policy(`hotplug.te',`
hotplug_read_config(udev_t)
')
@@ -166,5 +170,4 @@ optional_policy(`xserver.te',`
ifdef(`TODO',`
dontaudit udev_t ttyfile:chr_file unlink;
-dbusd_client(system, udev)
') dnl endif TODO
diff --git a/refpolicy/policy/modules/system/userdomain.if b/refpolicy/policy/modules/system/userdomain.if
index b132ba2..9015581 100644
--- a/refpolicy/policy/modules/system/userdomain.if
+++ b/refpolicy/policy/modules/system/userdomain.if
@@ -240,6 +240,10 @@ template(`base_user_template',`
term_getattr_all_user_ttys($1_t)
')
+ optional_policy(`dbus.te',`
+ dbus_system_bus_client_template($1,$1_t)
+ ')
+
optional_policy(`inetd.te',`
inetd_tcp_connect($1_t)
')
@@ -345,14 +349,12 @@ template(`base_user_template',`
# Grant permissions to access the system DBus
ifdef(`dbusd.te', `
- dbusd_client(system, $1)
can_network_server_tcp($1_dbusd_t)
allow $1_dbusd_t reserved_port_t:tcp_socket name_bind;
allow $1_t system_dbusd_t:dbus { send_msg acquire_svc };
dbusd_client($1, $1)
allow $1_t $1_dbusd_t:dbus { send_msg acquire_svc };
- dbusd_domain($1)
ifdef(`hald.te', `
allow $1_t hald_t:dbus send_msg;
allow hald_t $1_t:dbus send_msg;
More information about the scm-commits
mailing list