policy_module(dmesg)

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

type dmesg_t;
type dmesg_exec_t;
init_system_domain(dmesg_t, dmesg_exec_t)

########################################
#
# Local policy
#

allow dmesg_t self:capability sys_admin;
dontaudit dmesg_t self:capability sys_tty_config;

allow dmesg_t self:process signal_perms;

kernel_read_kernel_sysctls(dmesg_t)
kernel_read_ring_buffer(dmesg_t)
kernel_clear_ring_buffer(dmesg_t)
kernel_change_ring_buffer_level(dmesg_t)
kernel_list_proc(dmesg_t)
kernel_read_proc_symlinks(dmesg_t)
# for when /usr is not mounted:
kernel_dontaudit_search_unlabeled(dmesg_t)

dev_read_sysfs(dmesg_t)
dev_read_kmsg(dmesg_t)

fs_search_auto_mountpoints(dmesg_t)

term_dontaudit_use_console(dmesg_t)

domain_use_interactive_fds(dmesg_t)

files_list_etc(dmesg_t)
files_read_etc_files(dmesg_t)
files_read_usr_files(dmesg_t)

init_use_fds(dmesg_t)
init_use_script_ptys(dmesg_t)

logging_send_syslog_msg(dmesg_t)
logging_write_generic_logs(dmesg_t)

miscfiles_read_localization(dmesg_t)

userdom_dontaudit_use_unpriv_user_fds(dmesg_t)
userdom_use_user_terminals(dmesg_t)

optional_policy(`
	seutil_sigchld_newrole(dmesg_t)
')

