1 |
commit: d4afeed432628ed87eb86e305d80b982751edcab |
2 |
Author: Jason Zaman <jason <AT> perfinion <DOT> com> |
3 |
AuthorDate: Sat May 30 15:52:25 2015 +0000 |
4 |
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat May 30 16:00:29 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=d4afeed4 |
7 |
|
8 |
Add KDEConnect policy |
9 |
|
10 |
Thanks to Dan O. and a few minor fixups. |
11 |
Gentoo bug 536672 |
12 |
|
13 |
policy/modules/contrib/kdeconnect.fc | 1 + |
14 |
policy/modules/contrib/kdeconnect.if | 97 +++++++++++++++++++++++++++++ |
15 |
policy/modules/contrib/kdeconnect.te | 114 +++++++++++++++++++++++++++++++++++ |
16 |
3 files changed, 212 insertions(+) |
17 |
|
18 |
diff --git a/policy/modules/contrib/kdeconnect.fc b/policy/modules/contrib/kdeconnect.fc |
19 |
new file mode 100644 |
20 |
index 0000000..797a7a0 |
21 |
--- /dev/null |
22 |
+++ b/policy/modules/contrib/kdeconnect.fc |
23 |
@@ -0,0 +1 @@ |
24 |
+/usr/lib/libexec/kdeconnectd -- gen_context(system_u:object_r:kdeconnect_exec_t,s0) |
25 |
|
26 |
diff --git a/policy/modules/contrib/kdeconnect.if b/policy/modules/contrib/kdeconnect.if |
27 |
new file mode 100644 |
28 |
index 0000000..f07be14 |
29 |
--- /dev/null |
30 |
+++ b/policy/modules/contrib/kdeconnect.if |
31 |
@@ -0,0 +1,97 @@ |
32 |
+## <summary>policy for kdeconnect</summary> |
33 |
+ |
34 |
+######################################## |
35 |
+## <summary> |
36 |
+## Execute kdeconnect in the kdeconnect domin. |
37 |
+## </summary> |
38 |
+## <param name="domain"> |
39 |
+## <summary> |
40 |
+## Domain allowed to transition. |
41 |
+## </summary> |
42 |
+## </param> |
43 |
+# |
44 |
+interface(`kdeconnect_domtrans',` |
45 |
+ gen_require(` |
46 |
+ type kdeconnect_t, kdeconnect_exec_t; |
47 |
+ ') |
48 |
+ |
49 |
+ corecmd_search_bin($1) |
50 |
+ domtrans_pattern($1, kdeconnect_exec_t, kdeconnect_t) |
51 |
+') |
52 |
+ |
53 |
+######################################## |
54 |
+## <summary> |
55 |
+## Execute kdeconnect in the kdeconnect domain, and |
56 |
+## allow the specified role the kdeconnect domain. |
57 |
+## </summary> |
58 |
+## <param name="domain"> |
59 |
+## <summary> |
60 |
+## Domain allowed to transition |
61 |
+## </summary> |
62 |
+## </param> |
63 |
+## <param name="role"> |
64 |
+## <summary> |
65 |
+## The role to be allowed the kdeconnect domain. |
66 |
+## </summary> |
67 |
+## </param> |
68 |
+# |
69 |
+interface(`kdeconnect_run',` |
70 |
+ gen_require(` |
71 |
+ type kdeconnect_t; |
72 |
+ ') |
73 |
+ |
74 |
+ kdeconnect_domtrans($1) |
75 |
+ role $2 types kdeconnect_t; |
76 |
+') |
77 |
+ |
78 |
+######################################## |
79 |
+## <summary> |
80 |
+## Role access for kdeconnect |
81 |
+## </summary> |
82 |
+## <param name="role"> |
83 |
+## <summary> |
84 |
+## Role allowed access |
85 |
+## </summary> |
86 |
+## </param> |
87 |
+## <param name="domain"> |
88 |
+## <summary> |
89 |
+## User domain for the role |
90 |
+## </summary> |
91 |
+## </param> |
92 |
+# |
93 |
+interface(`kdeconnect_role',` |
94 |
+ gen_require(` |
95 |
+ type kdeconnect_t; |
96 |
+ ') |
97 |
+ |
98 |
+ role $1 types kdeconnect_t; |
99 |
+ |
100 |
+ kdeconnect_domtrans($2) |
101 |
+ |
102 |
+ allow $2 kdeconnect_t:unix_stream_socket connectto; |
103 |
+ allow kdeconnect_t $2:unix_stream_socket { read write connectto }; |
104 |
+ |
105 |
+ ps_process_pattern($2, kdeconnect_t) |
106 |
+ allow $2 kdeconnect_t:process { signull signal sigkill }; |
107 |
+') |
108 |
+ |
109 |
+######################################### |
110 |
+## <summary> |
111 |
+## Send and receive messages from the kdeconnect daemon |
112 |
+## over dbus. |
113 |
+## </summary> |
114 |
+## <param name="domain"> |
115 |
+## <summary> |
116 |
+## Domain allowed access. |
117 |
+## </summary> |
118 |
+## </param> |
119 |
+# |
120 |
+interface(`kdeconnect_dbus_chat',` |
121 |
+ gen_require(` |
122 |
+ type kdeconnect_t; |
123 |
+ class dbus send_msg; |
124 |
+ ') |
125 |
+ |
126 |
+ allow $1 kdeconnect_t:dbus send_msg; |
127 |
+ allow kdeconnect_t $1:dbus send_msg; |
128 |
+') |
129 |
|
130 |
diff --git a/policy/modules/contrib/kdeconnect.te b/policy/modules/contrib/kdeconnect.te |
131 |
new file mode 100644 |
132 |
index 0000000..92be330 |
133 |
--- /dev/null |
134 |
+++ b/policy/modules/contrib/kdeconnect.te |
135 |
@@ -0,0 +1,114 @@ |
136 |
+policy_module(kdeconnect, 1.0.0) |
137 |
+ |
138 |
+######################################## |
139 |
+# |
140 |
+# Declarations |
141 |
+# |
142 |
+ |
143 |
+## <desc> |
144 |
+## <p> |
145 |
+## Allow KDEConnect to read user home files |
146 |
+## </p> |
147 |
+## </desc> |
148 |
+gen_tunable(kdeconnect_read_user_files, true) |
149 |
+ |
150 |
+type kdeconnect_t; |
151 |
+type kdeconnect_exec_t; |
152 |
+application_domain(kdeconnect_t, kdeconnect_exec_t) |
153 |
+ |
154 |
+type kdeconnect_xdg_cache_home_t; |
155 |
+xdg_cache_home_content(kdeconnect_xdg_cache_home_t) |
156 |
+ |
157 |
+type kdeconnect_tmp_t; |
158 |
+userdom_user_tmp_file(kdeconnect_tmp_t) |
159 |
+ |
160 |
+type kdeconnect_xdg_config_home_t; |
161 |
+xdg_config_home_content(kdeconnect_xdg_config_home_t) |
162 |
+ |
163 |
+type kdeconnect_xdg_data_home_t; |
164 |
+xdg_data_home_content(kdeconnect_xdg_data_home_t) |
165 |
+ |
166 |
+type kdeconnect_tmpfs_t; |
167 |
+userdom_user_tmpfs_file(kdeconnect_tmpfs_t) |
168 |
+ |
169 |
+######################################## |
170 |
+# |
171 |
+# kdeconnect local policy |
172 |
+# |
173 |
+ |
174 |
+allow kdeconnect_t self:fifo_file manage_fifo_file_perms; |
175 |
+allow kdeconnect_t self:unix_stream_socket create_stream_socket_perms; |
176 |
+allow kdeconnect_t self:unix_dgram_socket { write getopt create setopt }; |
177 |
+allow kdeconnect_t self:netlink_route_socket create_netlink_socket_perms; |
178 |
+allow kdeconnect_t self:netlink_kobject_uevent_socket create_socket_perms; |
179 |
+allow kdeconnect_t self:tcp_socket create_stream_socket_perms; |
180 |
+allow kdeconnect_t self:udp_socket create_stream_socket_perms; |
181 |
+allow kdeconnect_t self:process { execmem signal }; |
182 |
+ |
183 |
+kernel_read_system_state(kdeconnect_t) |
184 |
+ |
185 |
+manage_dirs_pattern(kdeconnect_t, kdeconnect_tmp_t, kdeconnect_tmp_t) |
186 |
+manage_files_pattern(kdeconnect_t, kdeconnect_tmp_t, kdeconnect_tmp_t) |
187 |
+files_tmp_filetrans(kdeconnect_t, kdeconnect_tmp_t, { dir file }) |
188 |
+ |
189 |
+manage_files_pattern(kdeconnect_t, kdeconnect_xdg_cache_home_t, kdeconnect_xdg_cache_home_t) |
190 |
+manage_dirs_pattern(kdeconnect_t, kdeconnect_xdg_cache_home_t, kdeconnect_xdg_cache_home_t) |
191 |
+xdg_cache_home_filetrans(kdeconnect_t, kdeconnect_xdg_cache_home_t, dir) |
192 |
+ |
193 |
+manage_files_pattern(kdeconnect_t, kdeconnect_xdg_config_home_t, kdeconnect_xdg_config_home_t) |
194 |
+manage_dirs_pattern(kdeconnect_t, kdeconnect_xdg_config_home_t, kdeconnect_xdg_config_home_t) |
195 |
+xdg_config_home_filetrans(kdeconnect_t, kdeconnect_xdg_config_home_t, { dir file }) |
196 |
+ |
197 |
+manage_files_pattern(kdeconnect_t, kdeconnect_xdg_data_home_t, kdeconnect_xdg_data_home_t) |
198 |
+manage_dirs_pattern(kdeconnect_t, kdeconnect_xdg_data_home_t, kdeconnect_xdg_data_home_t) |
199 |
+xdg_data_home_filetrans(kdeconnect_t, kdeconnect_xdg_data_home_t, { dir file }) |
200 |
+ |
201 |
+manage_dirs_pattern(kdeconnect_t, kdeconnect_tmpfs_t, kdeconnect_tmpfs_t) |
202 |
+manage_files_pattern(kdeconnect_t, kdeconnect_tmpfs_t, kdeconnect_tmpfs_t) |
203 |
+fs_tmpfs_filetrans(kdeconnect_t, kdeconnect_tmpfs_t, { dir file }) |
204 |
+ |
205 |
+corenet_sendrecv_kdeconnect_client_packets(kdeconnect_t) |
206 |
+corenet_sendrecv_kdeconnect_server_packets(kdeconnect_t) |
207 |
+corenet_tcp_bind_kdeconnect_port(kdeconnect_t) |
208 |
+corenet_tcp_bind_generic_node(kdeconnect_t) |
209 |
+corenet_tcp_connect_kdeconnect_port(kdeconnect_t) |
210 |
+corenet_tcp_sendrecv_kdeconnect_port(kdeconnect_t) |
211 |
+corenet_udp_bind_kdeconnect_port(kdeconnect_t) |
212 |
+corenet_udp_sendrecv_kdeconnect_port(kdeconnect_t) |
213 |
+corenet_udp_bind_generic_node(kdeconnect_t) |
214 |
+ |
215 |
+dev_read_sysfs(kdeconnect_t) |
216 |
+domain_use_interactive_fds(kdeconnect_t) |
217 |
+ |
218 |
+files_manage_generic_tmp_files(kdeconnect_t) |
219 |
+files_read_etc_files(kdeconnect_t) |
220 |
+files_read_usr_files(kdeconnect_t) |
221 |
+fs_getattr_xattr_fs(kdeconnect_t) |
222 |
+ |
223 |
+miscfiles_read_localization(kdeconnect_t) |
224 |
+udev_read_db(kdeconnect_t) |
225 |
+ |
226 |
+userdom_manage_user_tmp_files(kdeconnect_t) |
227 |
+userdom_manage_user_tmp_sockets(kdeconnect_t) |
228 |
+userdom_use_user_ptys(kdeconnect_t) |
229 |
+# KDEConnect needs access to some global config/cache/data files |
230 |
+xdg_manage_cache_home(kdeconnect_t) |
231 |
+xdg_manage_config_home(kdeconnect_t) |
232 |
+xdg_manage_data_home(kdeconnect_t) |
233 |
+ |
234 |
+xserver_stream_connect(kdeconnect_t) |
235 |
+xserver_user_x_domain_template(kdeconnect, kdeconnect_t, kdeconnect_tmpfs_t) |
236 |
+ |
237 |
+tunable_policy(`kdeconnect_read_user_files',` |
238 |
+ userdom_read_user_home_content_files(kdeconnect_t) |
239 |
+') |
240 |
+ |
241 |
+####################################### |
242 |
+# |
243 |
+# Allow KDEConnect to talk to DBUS |
244 |
+# |
245 |
+ |
246 |
+dbus_all_session_bus_client(kdeconnect_t) |
247 |
+dbus_connect_all_session_bus(kdeconnect_t) |
248 |
+dbus_connect_system_bus(kdeconnect_t) |
249 |
+dbus_system_bus_client(kdeconnect_t) |