Blob Blame History Raw
policy_module(kdump, 1.2.0)

#######################################
#
# Declarations
#

type kdump_t;
type kdump_exec_t;
init_system_domain(kdump_t, kdump_exec_t)

type kdump_etc_t;
files_config_file(kdump_etc_t)

type kdump_initrc_exec_t;
init_script_file(kdump_initrc_exec_t)

type kdump_unit_file_t alias kdumpctl_unit_file_t;
systemd_unit_file(kdump_unit_file_t)

type kdumpctl_t;
type kdumpctl_exec_t;
init_daemon_domain(kdumpctl_t, kdumpctl_exec_t)
init_initrc_domain(kdumpctl_t)

type kdumpctl_tmp_t;
files_tmp_file(kdumpctl_tmp_t)

#####################################
#
# kdump local policy
#

allow kdump_t self:capability { sys_boot dac_override };
allow kdump_t self:capability2 compromise_kernel;

read_files_pattern(kdump_t, kdump_etc_t, kdump_etc_t)

files_read_etc_runtime_files(kdump_t)
files_read_kernel_img(kdump_t)

kernel_read_system_state(kdump_t)
kernel_read_core_if(kdump_t)
kernel_read_debugfs(kdump_t)
kernel_request_load_module(kdump_t)

dev_read_framebuffer(kdump_t)
dev_read_sysfs(kdump_t)

term_use_console(kdump_t)

#######################################
#
# kdumpctl local policy
#

#cjp:almost all rules are needed by dracut

kdump_domtrans(kdumpctl_t)

allow kdumpctl_t self:capability { dac_override sys_chroot };
allow kdumpctl_t self:process setfscreate;

allow kdumpctl_t self:fifo_file rw_fifo_file_perms;
allow kdumpctl_t self:unix_stream_socket create_stream_socket_perms;

manage_dirs_pattern(kdumpctl_t, kdumpctl_tmp_t, kdumpctl_tmp_t)
manage_chr_files_pattern(kdumpctl_t, kdumpctl_tmp_t, kdumpctl_tmp_t)
manage_files_pattern(kdumpctl_t, kdumpctl_tmp_t, kdumpctl_tmp_t)
manage_lnk_files_pattern(kdumpctl_t, kdumpctl_tmp_t, kdumpctl_tmp_t)
files_tmp_filetrans(kdumpctl_t, kdumpctl_tmp_t, { file dir lnk_file })
can_exec(kdumpctl_t, kdumpctl_tmp_t)

read_files_pattern(kdumpctl_t, kdump_etc_t, kdump_etc_t)

kernel_read_system_state(kdumpctl_t)

corecmd_exec_bin(kdumpctl_t)
corecmd_exec_shell(kdumpctl_t)

dev_read_sysfs(kdumpctl_t)
# dracut
dev_manage_all_dev_nodes(kdumpctl_t)

domain_use_interactive_fds(kdumpctl_t)

files_create_kernel_img(kdumpctl_t)
files_read_etc_runtime_files(kdumpctl_t)
files_read_kernel_modules(kdumpctl_t)
files_getattr_all_dirs(kdumpctl_t)
files_delete_kernel(kdumpctl_t)

fs_getattr_all_fs(kdumpctl_t)
fs_search_all(kdumpctl_t)

application_executable_ioctl(kdumpctl_t)

auth_read_passwd(kdumpctl_t)

init_exec(kdumpctl_t)
systemd_exec_systemctl(kdumpctl_t)
systemd_read_unit_files(kdumpctl_t)

libs_exec_ld_so(kdumpctl_t)

logging_send_syslog_msg(kdumpctl_t)
# Need log file from /var/log/dracut.log
logging_write_generic_logs(kdumpctl_t)

optional_policy(`
        gpg_exec(kdumpctl_t)
')

optional_policy(`
        lvm_read_config(kdumpctl_t)
')

optional_policy(`
        modutils_domtrans_insmod(kdumpctl_t)
        modutils_list_module_config(kdumpctl_t)
        modutils_read_module_config(kdumpctl_t)
')

optional_policy(`
        plymouthd_domtrans_plymouth(kdumpctl_t)
')

optional_policy(`
        ssh_exec(kdumpctl_t)
')

optional_policy(`
	unconfined_domain(kdumpctl_t)
')