## Chrony NTP background daemon. ##################################### ## ## Execute chronyd in the chronyd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`chronyd_domtrans',` gen_require(` type chronyd_t, chronyd_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, chronyd_exec_t, chronyd_t) ') ##################################### ## ## Execute chronyc in the chronyc domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`chronyd_domtrans_cli',` gen_require(` type chronyc_t, chronyc_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, chronyc_exec_t, chronyc_t) ') ######################################## ## ## Execute chronyd server in the ## chronyd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`chronyd_initrc_domtrans',` gen_require(` type chronyd_initrc_exec_t; ') init_labeled_script_domtrans($1, chronyd_initrc_exec_t) ') #################################### ## ## Execute chronyd in the caller domain. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_exec',` gen_require(` type chronyd_exec_t; ') corecmd_search_bin($1) can_exec($1, chronyd_exec_t) ') ######################################## ## ## Execute chronyc in the chronyc domain, ## and allow the specified roles the ## chronyc domain. ## ## ## ## Domain allowed to transition. ## ## ## ## ## Role allowed access. ## ## ## # interface(`chronyd_run_cli',` gen_require(` attribute_role chronyc_roles; ') chronyd_domtrans_cli($1) roleattribute $2 chronyc_roles; ') ##################################### ## ## Read chronyd log files. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_read_log',` gen_require(` type chronyd_var_log_t; ') logging_search_logs($1) read_files_pattern($1, chronyd_var_log_t, chronyd_var_log_t) ') ##################################### ## ## Read chronyd config file. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_read_config',` gen_require(` type chronyd_conf_t; ') files_search_etc($1) allow $1 chronyd_conf_t:file read_file_perms; ') ##################################### ## ## Read and write chronyd config file. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_rw_config',` gen_require(` type chronyd_conf_t; ') files_search_etc($1) allow $1 chronyd_conf_t:file rw_file_perms; ') ######################################## ## ## Read and write chronyd shared memory. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_rw_shm',` gen_require(` type chronyd_t, chronyd_tmpfs_t; ') allow $1 chronyd_t:shm rw_shm_perms; allow $1 chronyd_tmpfs_t:dir list_dir_perms; rw_files_pattern($1, chronyd_tmpfs_t, chronyd_tmpfs_t) read_lnk_files_pattern($1, chronyd_tmpfs_t, chronyd_tmpfs_t) fs_search_tmpfs($1) ') ######################################## ## ## Connect to chronyd using a unix ## domain stream socket. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_stream_connect',` gen_require(` type chronyd_t, chronyd_runtime_t; ') files_search_runtime($1) stream_connect_pattern($1, chronyd_runtime_t, chronyd_runtime_t, chronyd_t) ') ######################################## ## ## Send to chronyd using a unix domain ## datagram socket. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_dgram_send',` gen_require(` type chronyd_t, chronyd_runtime_t; ') files_search_runtime($1) dgram_send_pattern($1, chronyd_runtime_t, chronyd_runtime_t, chronyd_t) ') ######################################## ## ## Read chronyd key files. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_read_key_files',` gen_require(` type chronyd_keys_t; ') files_search_etc($1) read_files_pattern($1, chronyd_keys_t, chronyd_keys_t) ') ######################################## ## ## Allow specified domain to enable and disable chronyd unit ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_enabledisable',` gen_require(` type chronyd_unit_t; class service { enable disable }; ') allow $1 chronyd_unit_t:service { enable disable }; ') ######################################## ## ## Allow specified domain to start and stop chronyd unit ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_startstop',` gen_require(` type chronyd_unit_t; class service { start stop }; ') allow $1 chronyd_unit_t:service { start stop }; ') ######################################## ## ## Allow specified domain to get status of chronyd unit ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_status',` gen_require(` type chronyd_unit_t; class service status; ') allow $1 chronyd_unit_t:service status; ') ######################################## ## ## Send to chronyd command line interface using a unix domain ## datagram socket. ## ## ## ## Domain allowed access. ## ## # interface(`chronyd_dgram_send_cli',` gen_require(` type chronyc_t, chronyd_runtime_t; ') files_search_runtime($1) dgram_send_pattern($1, chronyd_runtime_t, chronyd_runtime_t, chronyc_t) ') #################################### ## ## All of the rules required to ## administrate an chronyd environment. ## ## ## ## Domain allowed access. ## ## ## ## ## Role allowed access. ## ## ## # interface(`chronyd_admin',` gen_require(` type chronyd_t, chronyd_var_log_t; type chronyd_runtime_t, chronyd_var_lib_t; type chronyd_initrc_exec_t, chronyd_keys_t; ') allow $1 chronyd_t:process { ptrace signal_perms }; ps_process_pattern($1, chronyd_t) init_startstop_service($1, $2, chronyd_t, chronyd_initrc_exec_t) files_search_etc($1) admin_pattern($1, chronyd_keys_t) logging_search_logs($1) admin_pattern($1, chronyd_var_log_t) files_search_var_lib($1) admin_pattern($1, chronyd_var_lib_t) files_search_runtime($1) admin_pattern($1, chronyd_runtime_t) ')