--- /dev/null
+
+## <summary>policy for zoneminder</summary>
+
+
+########################################
+## <summary>
+## Transition to zoneminder.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed to transition.
+## </summary>
+## </param>
+#
+interface(`zoneminder_domtrans',`
+ gen_require(`
+ type zoneminder_t, zoneminder_exec_t;
+ ')
+
+ corecmd_search_bin($1)
+ domtrans_pattern($1, zoneminder_exec_t, zoneminder_t)
+')
+
+
+########################################
+## <summary>
+## Execute zoneminder server in the zoneminder domain.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_initrc_domtrans',`
+ gen_require(`
+ type zoneminder_initrc_exec_t;
+ ')
+
+ init_labeled_script_domtrans($1, zoneminder_initrc_exec_t)
+')
+
+
+########################################
+## <summary>
+## Read zoneminder's log files.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+## <rolecap/>
+#
+interface(`zoneminder_read_log',`
+ gen_require(`
+ type zoneminder_log_t;
+ ')
+
+ logging_search_logs($1)
+ read_files_pattern($1, zoneminder_log_t, zoneminder_log_t)
+')
+
+########################################
+## <summary>
+## Append to zoneminder log files.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_append_log',`
+ gen_require(`
+ type zoneminder_log_t;
+ ')
+
+ logging_search_logs($1)
+ append_files_pattern($1, zoneminder_log_t, zoneminder_log_t)
+')
+
+########################################
+## <summary>
+## Manage zoneminder log files
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_manage_log',`
+ gen_require(`
+ type zoneminder_log_t;
+ ')
+
+ logging_search_logs($1)
+ manage_dirs_pattern($1, zoneminder_log_t, zoneminder_log_t)
+ manage_files_pattern($1, zoneminder_log_t, zoneminder_log_t)
+ manage_lnk_files_pattern($1, zoneminder_log_t, zoneminder_log_t)
+')
+
+########################################
+## <summary>
+## Search zoneminder lib directories.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_search_lib',`
+ gen_require(`
+ type zoneminder_var_lib_t;
+ ')
+
+ allow $1 zoneminder_var_lib_t:dir search_dir_perms;
+ files_search_var_lib($1)
+')
+
+########################################
+## <summary>
+## Read zoneminder lib files.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_read_lib_files',`
+ gen_require(`
+ type zoneminder_var_lib_t;
+ ')
+
+ files_search_var_lib($1)
+ read_files_pattern($1, zoneminder_var_lib_t, zoneminder_var_lib_t)
+')
+
+########################################
+## <summary>
+## Manage zoneminder lib files.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_manage_lib_files',`
+ gen_require(`
+ type zoneminder_var_lib_t;
+ ')
+
+ files_search_var_lib($1)
+ manage_files_pattern($1, zoneminder_var_lib_t, zoneminder_var_lib_t)
+')
+
+########################################
+## <summary>
+## Manage zoneminder lib directories.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_manage_lib_dirs',`
+ gen_require(`
+ type zoneminder_var_lib_t;
+ ')
+
+ files_search_var_lib($1)
+ manage_dirs_pattern($1, zoneminder_var_lib_t, zoneminder_var_lib_t)
+')
+
+
+########################################
+## <summary>
+## Search zoneminder spool directories.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_search_spool',`
+ gen_require(`
+ type zoneminder_spool_t;
+ ')
+
+ allow $1 zoneminder_spool_t:dir search_dir_perms;
+ files_search_spool($1)
+')
+
+########################################
+## <summary>
+## Read zoneminder spool files.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_read_spool_files',`
+ gen_require(`
+ type zoneminder_spool_t;
+ ')
+
+ files_search_spool($1)
+ read_files_pattern($1, zoneminder_spool_t, zoneminder_spool_t)
+')
+
+########################################
+## <summary>
+## Manage zoneminder spool files.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_manage_spool_files',`
+ gen_require(`
+ type zoneminder_spool_t;
+ ')
+
+ files_search_spool($1)
+ manage_files_pattern($1, zoneminder_spool_t, zoneminder_spool_t)
+')
+
+########################################
+## <summary>
+## Manage zoneminder spool dirs.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_manage_spool_dirs',`
+ gen_require(`
+ type zoneminder_spool_t;
+ ')
+
+ files_search_spool($1)
+ manage_dirs_pattern($1, zoneminder_spool_t, zoneminder_spool_t)
+')
+
+########################################
+## <summary>
+## Connect to zoneminder over an unix stream socket.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`zoneminder_stream_connect',`
+ gen_require(`
+ type zoneminder_t, zoneminder_var_lib_t;
+ ')
+
+ files_search_pids($1)
+ stream_connect_pattern($1, zoneminder_var_lib_t, zoneminder_var_lib_t, zoneminder_t)
+')
+
+########################################
+## <summary>
+## All of the rules required to administrate
+## an zoneminder environment
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+## <param name="role">
+## <summary>
+## Role allowed access.
+## </summary>
+## </param>
+## <rolecap/>
+#
+interface(`zoneminder_admin',`
+ gen_require(`
+ type zoneminder_t;
+ type zoneminder_initrc_exec_t;
+ type zoneminder_log_t;
+ type zoneminder_var_lib_t;
+ type zoneminder_spool_t;
+ ')
+
+ allow $1 zoneminder_t:process { ptrace signal_perms };
+ ps_process_pattern($1, zoneminder_t)
+
+ zoneminder_initrc_domtrans($1)
+ domain_system_change_exemption($1)
+ role_transition $2 zoneminder_initrc_exec_t system_r;
+ allow $2 system_r;
+
+ logging_search_logs($1)
+ admin_pattern($1, zoneminder_log_t)
+
+ files_search_var_lib($1)
+ admin_pattern($1, zoneminder_var_lib_t)
+
+ files_search_spool($1)
+ admin_pattern($1, zoneminder_spool_t)
+
+')
+
--- /dev/null
+policy_module(zoneminder, 1.0.0)
+
+########################################
+#
+# Declarations
+#
+
+type zoneminder_t;
+type zoneminder_exec_t;
+init_daemon_domain(zoneminder_t, zoneminder_exec_t)
+
+type zoneminder_initrc_exec_t;
+init_script_file(zoneminder_initrc_exec_t)
+
+type zoneminder_log_t;
+logging_log_file(zoneminder_log_t)
+
+type zoneminder_var_lib_t;
+files_type(zoneminder_var_lib_t)
+
+type zoneminder_spool_t;
+files_type(zoneminder_spool_t)
+
+########################################
+#
+# zoneminder local policy
+#
+
+allow zoneminder_t self:fifo_file rw_fifo_file_perms;
+allow zoneminder_t self:unix_stream_socket create_stream_socket_perms;
+
+manage_dirs_pattern(zoneminder_t, zoneminder_log_t, zoneminder_log_t)
+manage_files_pattern(zoneminder_t, zoneminder_log_t, zoneminder_log_t)
+logging_log_filetrans(zoneminder_t, zoneminder_log_t, { dir file })
+
+manage_dirs_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+manage_files_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+manage_sock_files_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+files_var_lib_filetrans(zoneminder_t, zoneminder_var_lib_t, { dir file sock_file })
+
+manage_dirs_pattern(zoneminder_t, zoneminder_spool_t, zoneminder_spool_t)
+manage_files_pattern(zoneminder_t, zoneminder_spool_t, zoneminder_spool_t)
+manage_lnk_files_pattern(zoneminder_t, zoneminder_spool_t, zoneminder_spool_t)
+files_spool_filetrans(zoneminder_t, zoneminder_spool_t, { dir file })
+
+dev_read_sysfs(zoneminder_t)
+dev_read_urand(zoneminder_t)
+
+domain_use_interactive_fds(zoneminder_t)
+
+files_read_etc_files(zoneminder_t)
+files_read_usr_files(zoneminder_t)
+
+miscfiles_read_localization(zoneminder_t)
+
+########################################
+#
+# zoneminder cgi local policy
+#
+
+apache_content_template(zoneminder)
+
+manage_sock_files_pattern(httpd_zoneminder_script_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+zoneminder_stream_connect(httpd_zoneminder_script_t)
--- /dev/null
+policy_module(zoneminder, 1.0.0)
+
+########################################
+#
+# Declarations
+#
+
+type zoneminder_t;
+type zoneminder_exec_t;
+init_daemon_domain(zoneminder_t, zoneminder_exec_t)
+
+permissive zoneminder_t;
+
+type zoneminder_initrc_exec_t;
+init_script_file(zoneminder_initrc_exec_t)
+
+type zoneminder_log_t;
+logging_log_file(zoneminder_log_t)
+
+type zoneminder_var_lib_t;
+files_type(zoneminder_var_lib_t)
+
+type zoneminder_spool_t;
+files_type(zoneminder_spool_t)
+
+########################################
+#
+# zoneminder local policy
+#
+
+allow zoneminder_t self:fifo_file rw_fifo_file_perms;
+allow zoneminder_t self:unix_stream_socket create_stream_socket_perms;
+
+manage_dirs_pattern(zoneminder_t, zoneminder_log_t, zoneminder_log_t)
+manage_files_pattern(zoneminder_t, zoneminder_log_t, zoneminder_log_t)
+logging_log_filetrans(zoneminder_t, zoneminder_log_t, { dir file })
+
+manage_dirs_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+manage_files_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+manage_sock_files_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+files_var_lib_filetrans(zoneminder_t, zoneminder_var_lib_t, { dir file sock_file })
+
+manage_dirs_pattern(zoneminder_t, zoneminder_spool_t, zoneminder_spool_t)
+manage_files_pattern(zoneminder_t, zoneminder_spool_t, zoneminder_spool_t)
+manage_lnk_files_pattern(zoneminder_t, zoneminder_spool_t, zoneminder_spool_t)
+files_spool_filetrans(zoneminder_t, zoneminder_spool_t, { dir file })
+
+dev_read_sysfs(zoneminder_t)
+dev_read_urand(zoneminder_t)
+
+domain_use_interactive_fds(zoneminder_t)
+
+files_read_etc_files(zoneminder_t)
+files_read_usr_files(zoneminder_t)
+
+miscfiles_read_localization(zoneminder_t)
+
+########################################
+#
+# zoneminder cgi local policy
+#
+
+apache_content_template(zoneminder)
+
+permissive httpd_zoneminder_script_t;
+
+manage_sock_files_pattern(httpd_zoneminder_script_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
+zoneminder_stream_connect(httpd_zoneminder_script_t)
+