policy_module(udisks2, 1.0.0)

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

type udisks2_t;
type udisks2_exec_t;
init_daemon_domain(udisks2_t, udisks2_exec_t)

type udisks2_var_lib_t;
files_type(udisks2_var_lib_t)

type udisks2_var_run_t;
files_pid_file(udisks2_var_run_t)

type udisks2_unit_file_t;
systemd_unit_file(udisks2_unit_file_t)

########################################
#
# udisks2 local policy
#
allow udisks2_t self:capability { sys_rawio };
allow udisks2_t self:unix_stream_socket create_stream_socket_perms;
allow udisks2_t self:netlink_kobject_uevent_socket { bind create getattr setopt };

manage_dirs_pattern(udisks2_t, udisks2_var_lib_t, udisks2_var_lib_t)
manage_files_pattern(udisks2_t, udisks2_var_lib_t, udisks2_var_lib_t)
manage_lnk_files_pattern(udisks2_t, udisks2_var_lib_t, udisks2_var_lib_t)
files_var_lib_filetrans(udisks2_t, udisks2_var_lib_t, { dir file lnk_file })

manage_dirs_pattern(udisks2_t, udisks2_var_run_t, udisks2_var_run_t)
manage_files_pattern(udisks2_t, udisks2_var_run_t, udisks2_var_run_t)
manage_lnk_files_pattern(udisks2_t, udisks2_var_run_t, udisks2_var_run_t)
files_pid_filetrans(udisks2_t, udisks2_var_run_t, { dir file lnk_file })

kernel_read_system_state(udisks2_t)

auth_use_nsswitch(udisks2_t)

dev_read_sysfs(udisks2_t)

logging_send_syslog_msg(udisks2_t)

storage_raw_read_fixed_disk(udisks2_t)
storage_raw_read_removable_device(udisks2_t)

udev_read_db(udisks2_t)

optional_policy(`
    dbus_system_bus_client(udisks2_t)
')

optional_policy(`
	policykit_dbus_chat(udisks2_t)
')
