## Policy for the RPM package manager. ######################################## ## ## Execute rpm programs in the rpm domain. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_domtrans',` gen_require(` type rpm_t, rpm_exec_t; ') files_search_usr($1) corecmd_search_bin($1) domain_auto_trans($1,rpm_exec_t,rpm_t) allow $1 rpm_t:fd use; allow rpm_t $1:fd use; allow rpm_t $1:fifo_file rw_file_perms; allow rpm_t $1:process sigchld; ') ######################################## ## ## Execute rpm_script programs in the rpm_script domain. ## ## ## ## Domain allowed access. ## ## # interface(`rpm_domtrans_script',` gen_require(` type rpm_script_t; ') # transition to rpm script: corecmd_shell_domtrans($1,rpm_script_t) allow $1 rpm_script_t:fd use; allow rpm_script_t $1:fd use; allow rpm_script_t $1:fifo_file rw_file_perms; allow rpm_script_t $1:process sigchld; ') ######################################## ## ## Execute RPM programs in the RPM domain. ## ## ## ## The type of the process performing this action. ## ## ## ## ## The role to allow the RPM domain. ## ## ## ## ## The type of the terminal allow the RPM domain to use. ## ## ## # interface(`rpm_run',` gen_require(` type rpm_t, rpm_script_t; ') rpm_domtrans($1) role $2 types rpm_t; role $2 types rpm_script_t; seutil_run_loadpolicy(rpm_script_t,$2,$3) seutil_run_semanage(rpm_script_t,$2,$3) seutil_run_setfiles(rpm_script_t,$2,$3) seutil_run_restorecon(rpm_script_t,$2,$3) allow rpm_t $3:chr_file rw_term_perms; ') ######################################## ## ## Execute the rpm client in the caller domain. ## ## ## ## Domain allowed access. ## ## # interface(`rpm_exec',` gen_require(` type rpm_exec_t; ') corecmd_search_bin($1) can_exec($1,rpm_exec_t) ') ######################################## ## ## Inherit and use file descriptors from RPM. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_use_fds',` gen_require(` type rpm_t; ') allow $1 rpm_t:fd use; ') ######################################## ## ## Read from an unnamed RPM pipe. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_read_pipes',` gen_require(` type rpm_t; ') allow $1 rpm_t:fifo_file r_file_perms; ') ######################################## ## ## Read and write an unnamed RPM pipe. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_rw_pipes',` gen_require(` type rpm_t; ') allow $1 rpm_t:fifo_file rw_file_perms; ') ######################################## ## ## Send and receive messages from ## rpm over dbus. ## ## ## ## Domain allowed access. ## ## # interface(`rpm_dbus_chat',` gen_require(` type rpm_t; class dbus send_msg; ') allow $1 rpm_t:dbus send_msg; allow rpm_t $1:dbus send_msg; ') ######################################## ## ## Create, read, write, and delete the RPM log. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_manage_log',` gen_require(` type rpm_log_t; ') logging_rw_generic_log_dirs($1) allow $1 rpm_log_t:file create_file_perms; ') ######################################## ## ## Inherit and use file descriptors from RPM scripts. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_use_script_fds',` gen_require(` type rpm_script_t; ') allow $1 rpm_script_t:fd use; ') ######################################## ## ## Read the RPM package database. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_read_db',` gen_require(` type rpm_var_lib_t; ') files_search_var_lib($1) allow $1 rpm_var_lib_t:dir r_dir_perms; allow $1 rpm_var_lib_t:file r_file_perms; allow $1 rpm_var_lib_t:lnk_file r_file_perms; ') ######################################## ## ## Create, read, write, and delete the RPM package database. ## ## ## ## The type of the process performing this action. ## ## # interface(`rpm_manage_db',` gen_require(` type rpm_var_lib_t; ') files_search_var_lib($1) allow $1 rpm_var_lib_t:dir rw_dir_perms; allow $1 rpm_var_lib_t:file manage_file_perms; allow $1 rpm_var_lib_t:lnk_file create_lnk_perms; ') ######################################## ## ## Do not audit attempts to create, read, ## write, and delete the RPM package database. ## ## ## ## Domain to not audit. ## ## # interface(`rpm_dontaudit_manage_db',` gen_require(` type rpm_var_lib_t; ') dontaudit $1 rpm_var_lib_t:dir rw_dir_perms; dontaudit $1 rpm_var_lib_t:file create_file_perms; dontaudit $1 rpm_var_lib_t:lnk_file create_lnk_perms; ')