Gentoo Archives: gentoo-commits

From: Jason Zaman <perfinion@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/hardened-refpolicy:master commit in: policy/modules/contrib/
Date: Sat, 30 May 2015 16:15:55
Message-Id: 1433001629.d4afeed432628ed87eb86e305d80b982751edcab.perfinion@gentoo
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)