]> git.ipfire.org Git - people/stevee/selinux-policy.git/commitdiff
Add initial policy for zoneminder
authorDan Walsh <dwalsh@redhat.com>
Thu, 22 Dec 2011 19:24:51 +0000 (19:24 +0000)
committerDan Walsh <dwalsh@redhat.com>
Thu, 22 Dec 2011 19:24:51 +0000 (19:24 +0000)
policy/modules/admin/permissivedomains.te
policy/modules/services/zoneminder.fc [new file with mode: 0644]
policy/modules/services/zoneminder.if [new file with mode: 0644]
policy/modules/services/zoneminder.te [new file with mode: 0644]
policy/modules/services/zoneminder.te~ [new file with mode: 0644]

index 9c8b64f9e7fcf8fc431b87ddf93ce8e82a011624..deed25f633d4f9eaab01d394934330526966595d 100644 (file)
@@ -8,3 +8,13 @@ optional_policy(`
 
        permissive blueman_t;
 ')
+
+optional_policy(`
+       gen_require(`
+               type httpd_zoneminder_script_t, zoneminder_t;
+       ')
+
+       permissive httpd_zoneminder_script_t;
+       permissive zoneminder_t;
+')
+
diff --git a/policy/modules/services/zoneminder.fc b/policy/modules/services/zoneminder.fc
new file mode 100644 (file)
index 0000000..b74fadf
--- /dev/null
@@ -0,0 +1,12 @@
+
+/etc/rc\.d/init\.d/zoneminder  --      gen_context(system_u:object_r:zoneminder_initrc_exec_t,s0)
+
+/usr/bin/zmpkg.pl              --      gen_context(system_u:object_r:zoneminder_exec_t,s0)
+
+/usr/libexec/zoneminder/cgi-bin(/.*)?  gen_context(system_u:object_r:httpd_zoneminder_script_exec_t,s0)
+
+/var/lib/zoneminder(/.*)?              gen_context(system_u:object_r:zoneminder_var_lib_t,s0)
+
+/var/log/zoneminder(/.*)?              gen_context(system_u:object_r:zoneminder_log_t,s0)
+
+/var/spool/zoneminder-upload(/.*)?     gen_context(system_u:object_r:zoneminder_spool_t,s0)
diff --git a/policy/modules/services/zoneminder.if b/policy/modules/services/zoneminder.if
new file mode 100644 (file)
index 0000000..aadeef3
--- /dev/null
@@ -0,0 +1,320 @@
+
+## <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)
+
+')
+
diff --git a/policy/modules/services/zoneminder.te b/policy/modules/services/zoneminder.te
new file mode 100644 (file)
index 0000000..acd39eb
--- /dev/null
@@ -0,0 +1,64 @@
+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)
diff --git a/policy/modules/services/zoneminder.te~ b/policy/modules/services/zoneminder.te~
new file mode 100644 (file)
index 0000000..a8e8efa
--- /dev/null
@@ -0,0 +1,69 @@
+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)
+