32 | ##
33 | ## Allow usbguard-daemon to write rules (e.g. /etc/usbguard/rules.conf)
34 | ## Enabled by default because a major usecase is to allow or reject
35 | ## devices as a normal user with a desktop applet which talks to the
36 | ## daemon with IPC.
37 | ##
38 | ##
39 | gen_tunable(usbguard_daemon_write_rules, true)
40 |
41 | type usbguard_t;
42 | type usbguard_exec_t;
43 | init_daemon_domain(usbguard_t, usbguard_exec_t)
44 | init_nnp_daemon_domain(usbguard_t)
45 |
46 | type usbguard_unit_file_t;
47 | systemd_unit_file(usbguard_unit_file_t)
48 |
49 | type usbguard_conf_t;
50 | files_config_file(usbguard_conf_t)
51 | systemd_mount_dir(usbguard_conf_t)
52 |
53 | type usbguard_log_t;
54 | logging_log_file(usbguard_log_t)
55 | systemd_mount_dir(usbguard_log_t)
56 |
57 | type usbguard_rules_t;
58 | files_config_file(usbguard_rules_t)
59 |
60 | type usbguard_tmpfs_t;
61 | files_tmpfs_file(usbguard_tmpfs_t)
62 |
63 | type usbguard_var_run_t;
64 | files_pid_file(usbguard_var_run_t)
65 |
66 | ########################################
67 | #
68 | # Local policy
69 | #
70 |
71 | allow usbguard_t self:capability { audit_write chown fowner };
72 | allow usbguard_t self:netlink_kobject_uevent_socket { bind create read setopt };
73 | allow usbguard_t self:netlink_audit_socket { create_netlink_socket_perms nlmsg_relay };
74 |
75 | list_dirs_pattern(usbguard_t,usbguard_conf_t,usbguard_conf_t)
76 | read_files_pattern(usbguard_t,usbguard_conf_t,usbguard_conf_t)
77 |
78 | list_dirs_pattern(usbguard_t,usbguard_rules_t,usbguard_rules_t)
79 | read_files_pattern(usbguard_t,usbguard_conf_t,usbguard_rules_t)
80 |
81 | manage_dirs_pattern(usbguard_t, usbguard_var_run_t, usbguard_var_run_t)
82 | manage_files_pattern(usbguard_t, usbguard_var_run_t, usbguard_var_run_t)
83 | files_pid_filetrans(usbguard_t, usbguard_var_run_t, file)
84 |
85 | manage_files_pattern(usbguard_t, usbguard_tmpfs_t, usbguard_tmpfs_t)
86 | fs_tmpfs_filetrans(usbguard_t, usbguard_tmpfs_t, { dir file })
87 | manage_dirs_pattern(usbguard_t, usbguard_tmpfs_t, usbguard_tmpfs_t)
88 | allow usbguard_t usbguard_tmpfs_t:file map;
89 |
90 | manage_files_pattern(usbguard_t, usbguard_log_t, usbguard_log_t)
91 | logging_log_filetrans(usbguard_t, usbguard_log_t, { dir file })
92 |
93 | kernel_read_system_state(usbguard_t)
94 |
95 | dev_list_sysfs(usbguard_t)
96 | dev_rw_sysfs(usbguard_t)
97 |
98 | auth_read_passwd(usbguard_t)
99 |
100 | logging_send_syslog_msg(usbguard_t)
101 |
102 | usbguard_ipc_access(usbguard_t)
103 |
104 | tunable_policy(`usbguard_daemon_write_conf',`
105 | rw_files_pattern(usbguard_t, usbguard_conf_t, usbguard_conf_t)
106 | ')
107 |
108 | tunable_policy(`usbguard_daemon_write_rules',`
109 | rw_files_pattern(usbguard_t, usbguard_rules_t, usbguard_rules_t)
110 | ')
111 |
112 | optional_policy(`
113 | dbus_system_domain(usbguard_t, usbguard_exec_t)
114 |
115 | optional_policy(`
116 | policykit_dbus_chat(usbguard_t)
117 | ')
118 | ')
119 |
120 | # Allow confined users to communicate with usbguard over unix socket
121 | optional_policy(`
122 | gen_require(`
123 | attribute x_userdomain;
124 | ')
125 |
126 | allow x_userdomain usbguard_t:unix_stream_socket connectto;
127 | manage_files_pattern(x_userdomain, usbguard_tmpfs_t, usbguard_tmpfs_t)
128 | allow x_userdomain usbguard_tmpfs_t:file map;
129 | ')
130 |
131 | ifdef(`systemd_userdbd_stream_connect',`
132 | optional_policy(`
133 | systemd_userdbd_stream_connect(usbguard_t)
134 | ')
135 | ')
136 |
--------------------------------------------------------------------------------