## 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; class process sigchld; class fd use; class fifo_file rw_file_perms; ') 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_script_domtrans',` 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; class chr_file rw_term_perms; ') rpm_domtrans($1) role $2 types rpm_t; role $2 types rpm_script_t; seutil_run_loadpol(rpm_script_t,$2,$3) allow rpm_t $3:chr_file rw_term_perms; ') ######################################## ## ## Inherit and use file descriptors from RPM. ## ## ## The type of the process performing this action. ## # interface(`rpm_use_fd',` gen_require(` type rpm_t; class fd use; ') allow $1 rpm_t:fd use; ') ######################################## ## ## Read from an unnamed RPM pipe. ## ## ## The type of the process performing this action. ## # interface(`rpm_read_pipe',` gen_require(` type rpm_t; class fifo_file r_file_perms; ') 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_pipe',` gen_require(` type rpm_t; class fifo_file rw_file_perms; ') allow $1 rpm_t:fifo_file rw_file_perms; ') ######################################## ## ## 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; class file create_file_perms; ') logging_rw_log_dir($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_fd',` gen_require(` type rpm_script_t; class fd use; ') 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 { getattr read }; 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 { getattr create read write append unlink }; allow $1 rpm_var_lib_t:lnk_file { getattr read write unlink }; ') ######################################## ## ## 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; ')