]> git.ipfire.org Git - people/stevee/selinux-policy.git/blob - policy/modules/services/xserver.te
611ee4c9ecd277cb89b478fc272fdd0599fa9636
[people/stevee/selinux-policy.git] / policy / modules / services / xserver.te
1 policy_module(xserver, 3.5.6)
2
3 gen_require(`
4 class x_drawable all_x_drawable_perms;
5 class x_screen all_x_screen_perms;
6 class x_gc all_x_gc_perms;
7 class x_font all_x_font_perms;
8 class x_colormap all_x_colormap_perms;
9 class x_property all_x_property_perms;
10 class x_selection all_x_selection_perms;
11 class x_cursor all_x_cursor_perms;
12 class x_client all_x_client_perms;
13 class x_device all_x_device_perms;
14 class x_pointer all_x_pointer_perms;
15 class x_keyboard all_x_keyboard_perms;
16 class x_server all_x_server_perms;
17 class x_extension all_x_extension_perms;
18 class x_resource all_x_resource_perms;
19 class x_event all_x_event_perms;
20 class x_synthetic_event all_x_synthetic_event_perms;
21 ')
22
23 ########################################
24 #
25 # Declarations
26 #
27
28 ## <desc>
29 ## <p>
30 ## Allows clients to write to the X server shared
31 ## memory segments.
32 ## </p>
33 ## </desc>
34 gen_tunable(allow_write_xshm, false)
35
36 ## <desc>
37 ## <p>
38 ## Allows XServer to execute writable memory
39 ## </p>
40 ## </desc>
41 gen_tunable(allow_xserver_execmem, false)
42
43 ## <desc>
44 ## <p>
45 ## Allow the graphical login program to execute bootloader
46 ## </p>
47 ## </desc>
48 gen_tunable(xdm_exec_bootloader, false)
49
50 ## <desc>
51 ## <p>
52 ## Allow the graphical login program to login directly as sysadm_r:sysadm_t
53 ## </p>
54 ## </desc>
55 gen_tunable(xdm_sysadm_login, false)
56
57 ## <desc>
58 ## <p>
59 ## Support X userspace object manager
60 ## </p>
61 ## </desc>
62 gen_tunable(xserver_object_manager, false)
63
64 ## <desc>
65 ## <p>
66 ## Allow regular users direct dri device access
67 ## </p>
68 ## </desc>
69 gen_tunable(user_direct_dri, false)
70
71 attribute xdmhomewriter;
72 attribute x_userdomain;
73 attribute x_domain;
74
75 # X Events
76 attribute xevent_type;
77 attribute input_xevent_type;
78 type xevent_t, xevent_type;
79 typealias xevent_t alias { user_property_xevent_t staff_property_xevent_t sysadm_property_xevent_t };
80 typealias xevent_t alias { auditadm_property_xevent_t secadm_property_xevent_t };
81 typealias xevent_t alias { user_focus_xevent_t staff_focus_xevent_t sysadm_focus_xevent_t };
82 typealias xevent_t alias { auditadm_focus_xevent_t secadm_focus_xevent_t };
83 typealias xevent_t alias { user_manage_xevent_t staff_manage_xevent_t sysadm_manage_xevent_t };
84 typealias xevent_t alias { auditadm_manage_xevent_t secadm_manage_xevent_t };
85 typealias xevent_t alias { user_default_xevent_t staff_default_xevent_t sysadm_default_xevent_t };
86 typealias xevent_t alias { auditadm_default_xevent_t secadm_default_xevent_t };
87
88 type client_xevent_t, xevent_type;
89 typealias client_xevent_t alias { user_client_xevent_t staff_client_xevent_t sysadm_client_xevent_t };
90 typealias client_xevent_t alias { auditadm_client_xevent_t secadm_client_xevent_t };
91
92 type input_xevent_t, xevent_type, input_xevent_type;
93
94 # X Extensions
95 attribute xextension_type;
96 type xextension_t, xextension_type;
97 type security_xextension_t, xextension_type;
98
99 # X Properties
100 attribute xproperty_type;
101 type xproperty_t, xproperty_type;
102 type seclabel_xproperty_t, xproperty_type;
103 type clipboard_xproperty_t, xproperty_type;
104
105 # X Selections
106 attribute xselection_type;
107 type xselection_t, xselection_type;
108 type clipboard_xselection_t, xselection_type;
109 #type settings_xselection_t, xselection_type;
110 #type dbus_xselection_t, xselection_type;
111
112 # X Drawables
113 attribute xdrawable_type;
114 attribute xcolormap_type;
115 type root_xdrawable_t, xdrawable_type;
116 type root_xcolormap_t, xcolormap_type;
117
118 attribute xserver_unconfined_type;
119
120 xserver_object_types_template(root)
121 xserver_object_types_template(user)
122
123 typealias user_xproperty_t alias { staff_xproperty_t sysadm_xproperty_t };
124 typealias user_xproperty_t alias { auditadm_xproperty_t secadm_xproperty_t };
125 typealias user_input_xevent_t alias { staff_input_xevent_t sysadm_input_xevent_t };
126 typealias user_input_xevent_t alias { auditadm_input_xevent_t secadm_input_xevent_t };
127
128 type remote_t;
129 xserver_object_types_template(remote)
130 xserver_common_x_domain_template(remote, remote_t)
131
132 type user_fonts_t;
133 typealias user_fonts_t alias { staff_fonts_t sysadm_fonts_t };
134 typealias user_fonts_t alias { auditadm_fonts_t secadm_fonts_t };
135 typealias user_fonts_t alias { xguest_fonts_t unconfined_fonts_t user_fonts_home_t };
136 userdom_user_home_content(user_fonts_t)
137
138 type user_fonts_cache_t;
139 typealias user_fonts_cache_t alias { staff_fonts_cache_t sysadm_fonts_cache_t };
140 typealias user_fonts_cache_t alias { auditadm_fonts_cache_t secadm_fonts_cache_t };
141 typealias user_fonts_cache_t alias { xguest_fonts_cache_t unconfined_fonts_cache_t };
142 userdom_user_home_content(user_fonts_cache_t)
143
144 type user_fonts_config_t;
145 typealias user_fonts_config_t alias { staff_fonts_config_t sysadm_fonts_config_t };
146 typealias user_fonts_config_t alias { auditadm_fonts_config_t secadm_fonts_config_t };
147 typealias user_fonts_config_t alias { fonts_config_home_t xguest_fonts_config_t unconfined_fonts_config_t };
148 userdom_user_home_content(user_fonts_config_t)
149
150 type iceauth_t;
151 type iceauth_exec_t;
152 typealias iceauth_t alias { user_iceauth_t staff_iceauth_t sysadm_iceauth_t };
153 typealias iceauth_t alias { xguest_iceauth_t };
154 typealias iceauth_t alias { auditadm_iceauth_t secadm_iceauth_t };
155 application_domain(iceauth_t, iceauth_exec_t)
156 ubac_constrained(iceauth_t)
157
158 type iceauth_home_t;
159 typealias iceauth_home_t alias { user_iceauth_home_t staff_iceauth_home_t sysadm_iceauth_home_t };
160 typealias iceauth_home_t alias { auditadm_iceauth_home_t secadm_iceauth_home_t };
161 typealias iceauth_home_t alias { xguest_iceauth_home_t };
162 userdom_user_home_content(iceauth_home_t)
163
164 type xauth_t;
165 type xauth_exec_t;
166 typealias xauth_t alias { user_xauth_t staff_xauth_t sysadm_xauth_t };
167 typealias xauth_t alias { auditadm_xauth_t secadm_xauth_t };
168 typealias xauth_t alias { xguest_xauth_t unconfined_xauth_t };
169 application_domain(xauth_t, xauth_exec_t)
170 ubac_constrained(xauth_t)
171
172 type xauth_home_t;
173 typealias xauth_home_t alias { user_xauth_home_t staff_xauth_home_t sysadm_xauth_home_t };
174 typealias xauth_home_t alias { auditadm_xauth_home_t secadm_xauth_home_t };
175 typealias xauth_home_t alias { xguest_xauth_home_t unconfined_xauth_home_t };
176 userdom_user_home_content(xauth_home_t)
177
178 type xauth_tmp_t;
179 typealias xauth_tmp_t alias { user_xauth_tmp_t staff_xauth_tmp_t sysadm_xauth_tmp_t };
180 typealias xauth_tmp_t alias { xguest_xauth_tmp_t unconfined_xauth_tmp_t };
181 typealias xauth_tmp_t alias { auditadm_xauth_tmp_t secadm_xauth_tmp_t };
182 files_tmp_file(xauth_tmp_t)
183 ubac_constrained(xauth_tmp_t)
184
185 # this is not actually a device, its a pipe
186 type xconsole_device_t;
187 files_type(xconsole_device_t)
188 fs_associate_tmpfs(xconsole_device_t)
189 files_associate_tmp(xconsole_device_t)
190
191 type xdm_t;
192 type xdm_exec_t;
193 auth_login_pgm_domain(xdm_t)
194 init_domain(xdm_t, xdm_exec_t)
195 init_system_domain(xdm_t, xdm_exec_t)
196 xserver_object_types_template(xdm)
197 xserver_common_x_domain_template(xdm, xdm_t)
198
199 type xdm_lock_t;
200 files_lock_file(xdm_lock_t)
201
202 type xdm_etc_t;
203 files_config_file(xdm_etc_t)
204
205 type xdm_rw_etc_t;
206 files_config_file(xdm_rw_etc_t)
207
208 type xdm_spool_t;
209 files_spool_file(xdm_spool_t)
210
211 type xdm_var_lib_t;
212 files_type(xdm_var_lib_t)
213
214 type xdm_var_run_t;
215 files_pid_file(xdm_var_run_t)
216
217 type xserver_var_lib_t;
218 files_type(xserver_var_lib_t)
219
220 type xserver_var_run_t;
221 files_pid_file(xserver_var_run_t)
222
223 type xdm_tmp_t;
224 files_tmp_file(xdm_tmp_t)
225 typealias xdm_tmp_t alias { xserver_tmp_t user_xserver_tmp_t staff_xserver_tmp_t sysadm_xserver_tmp_t ice_tmp_t };
226 typealias xdm_tmp_t alias { auditadm_xserver_tmp_t secadm_xserver_tmp_t xdm_xserver_tmp_t };
227 ubac_constrained(xdm_tmp_t)
228
229 type xdm_tmpfs_t;
230 files_tmpfs_file(xdm_tmpfs_t)
231
232 type xdm_home_t;
233 userdom_user_home_content(xdm_home_t)
234
235 type xdm_log_t;
236 logging_log_file(xdm_log_t)
237
238 # type for /var/lib/xkb
239 type xkb_var_lib_t;
240 files_type(xkb_var_lib_t)
241
242 # Type for the executable used to start the X server, e.g. Xwrapper.
243 type xserver_t;
244 type xserver_exec_t;
245 typealias xserver_t alias { user_xserver_t staff_xserver_t sysadm_xserver_t };
246 typealias xserver_t alias { auditadm_xserver_t secadm_xserver_t xdm_xserver_t };
247 init_system_domain(xserver_t, xserver_exec_t)
248 ubac_constrained(xserver_t)
249
250 type xserver_tmpfs_t;
251 typealias xserver_tmpfs_t alias { user_xserver_tmpfs_t staff_xserver_tmpfs_t sysadm_xserver_tmpfs_t xguest_xserver_tmpfs_t unconfined_xserver_tmpfs_t xdm_xserver_tmpfs_t };
252 typealias xserver_tmpfs_t alias { auditadm_xserver_tmpfs_t secadm_xserver_tmpfs_t };
253 files_tmpfs_file(xserver_tmpfs_t)
254 ubac_constrained(xserver_tmpfs_t)
255
256 type xsession_exec_t;
257 corecmd_executable_file(xsession_exec_t)
258
259 # Type for the X server log file.
260 type xserver_log_t;
261 logging_log_file(xserver_log_t)
262
263 ifdef(`enable_mcs',`
264 init_ranged_domain(xdm_t, xdm_exec_t, s0 - mcs_systemhigh)
265 init_ranged_daemon_domain(xdm_t, xdm_exec_t, s0 - mcs_systemhigh)
266 ')
267
268 optional_policy(`
269 prelink_object_file(xkb_var_lib_t)
270 ')
271
272 ########################################
273 #
274 # Iceauth local policy
275 #
276
277 allow iceauth_t iceauth_home_t:file manage_file_perms;
278 userdom_user_home_dir_filetrans(iceauth_t, iceauth_home_t, file)
279
280 allow xdm_t iceauth_home_t:file read_file_perms;
281
282 dev_read_rand(iceauth_t)
283
284 fs_search_auto_mountpoints(iceauth_t)
285
286 userdom_use_inherited_user_terminals(iceauth_t)
287 userdom_read_user_tmp_files(iceauth_t)
288 userdom_read_all_users_state(iceauth_t)
289
290 tunable_policy(`use_fusefs_home_dirs',`
291 fs_manage_fusefs_files(iceauth_t)
292 ')
293
294 tunable_policy(`use_nfs_home_dirs',`
295 fs_manage_nfs_files(iceauth_t)
296 ')
297
298 tunable_policy(`use_samba_home_dirs',`
299 fs_manage_cifs_files(iceauth_t)
300 ')
301
302 ifdef(`hide_broken_symptoms',`
303 dev_dontaudit_read_urand(iceauth_t)
304 dev_dontaudit_rw_dri(iceauth_t)
305 dev_dontaudit_rw_generic_dev_nodes(iceauth_t)
306 fs_dontaudit_list_inotifyfs(iceauth_t)
307 fs_dontaudit_rw_anon_inodefs_files(iceauth_t)
308 term_dontaudit_use_unallocated_ttys(iceauth_t)
309
310 userdom_dontaudit_read_user_home_content_files(iceauth_t)
311 userdom_dontaudit_write_user_home_content_files(iceauth_t)
312 userdom_dontaudit_write_user_tmp_files(iceauth_t)
313
314 optional_policy(`
315 mozilla_dontaudit_rw_user_home_files(iceauth_t)
316 ')
317 ')
318
319 ########################################
320 #
321 # Xauth local policy
322 #
323
324 allow xauth_t self:capability dac_override;
325 allow xauth_t self:process signal;
326 allow xauth_t self:shm create_shm_perms;
327 allow xauth_t self:unix_stream_socket create_stream_socket_perms;
328 allow xauth_t self:unix_dgram_socket create_socket_perms;
329
330 allow xauth_t xdm_t:process sigchld;
331 allow xauth_t xserver_t:unix_stream_socket connectto;
332
333 corenet_tcp_connect_xserver_port(xauth_t)
334
335 allow xauth_t xauth_home_t:file manage_file_perms;
336 userdom_user_home_dir_filetrans(xauth_t, xauth_home_t, file)
337 userdom_admin_home_dir_filetrans(xauth_t, xauth_home_t, file)
338
339 manage_dirs_pattern(xauth_t, xdm_var_run_t, xdm_var_run_t)
340 manage_files_pattern(xauth_t, xdm_var_run_t, xdm_var_run_t)
341
342 manage_dirs_pattern(xauth_t, xauth_tmp_t, xauth_tmp_t)
343 manage_files_pattern(xauth_t, xauth_tmp_t, xauth_tmp_t)
344 files_tmp_filetrans(xauth_t, xauth_tmp_t, { file dir })
345
346 stream_connect_pattern(xauth_t, xserver_tmp_t, xserver_tmp_t, xserver_t)
347
348 kernel_read_network_state(xauth_t)
349 kernel_read_system_state(xauth_t)
350 kernel_request_load_module(xauth_t)
351
352 domain_use_interactive_fds(xauth_t)
353 domain_dontaudit_leaks(xauth_t)
354
355 files_read_etc_files(xauth_t)
356 files_read_usr_files(xauth_t)
357 files_search_pids(xauth_t)
358 files_dontaudit_getattr_all_dirs(xauth_t)
359 files_dontaudit_leaks(xauth_t)
360 files_var_lib_filetrans(xauth_t, xauth_home_t, file)
361
362 fs_dontaudit_leaks(xauth_t)
363 fs_getattr_all_fs(xauth_t)
364 fs_search_auto_mountpoints(xauth_t)
365
366 # Probably a leak
367 term_dontaudit_use_ptmx(xauth_t)
368 term_dontaudit_use_console(xauth_t)
369
370 auth_use_nsswitch(xauth_t)
371
372 userdom_use_inherited_user_terminals(xauth_t)
373 userdom_read_user_tmp_files(xauth_t)
374 userdom_read_all_users_state(xauth_t)
375
376 xserver_rw_xdm_tmp_files(xauth_t)
377
378 ifdef(`hide_broken_symptoms',`
379 fs_dontaudit_rw_anon_inodefs_files(xauth_t)
380 fs_dontaudit_list_inotifyfs(xauth_t)
381 userdom_manage_user_home_content_files(xauth_t)
382 userdom_manage_user_tmp_files(xauth_t)
383 dev_dontaudit_rw_generic_dev_nodes(xauth_t)
384 miscfiles_read_fonts(xauth_t)
385 ')
386
387 tunable_policy(`use_fusefs_home_dirs',`
388 fs_manage_fusefs_files(xauth_t)
389 ')
390
391 tunable_policy(`use_nfs_home_dirs',`
392 fs_manage_nfs_files(xauth_t)
393 fs_read_nfs_symlinks(xauth_t)
394 ')
395
396 tunable_policy(`use_samba_home_dirs',`
397 fs_manage_cifs_files(xauth_t)
398 ')
399
400 ifdef(`hide_broken_symptoms',`
401 term_dontaudit_use_unallocated_ttys(xauth_t)
402 dev_dontaudit_rw_dri(xauth_t)
403 ')
404
405 optional_policy(`
406 nx_var_lib_filetrans(xauth_t, xauth_home_t, file)
407 ')
408
409 optional_policy(`
410 ssh_sigchld(xauth_t)
411 ssh_read_pipes(xauth_t)
412 ssh_dontaudit_rw_tcp_sockets(xauth_t)
413 ')
414
415 ########################################
416 #
417 # XDM Local policy
418 #
419
420 allow xdm_t self:capability { setgid setuid sys_resource kill sys_tty_config mknod chown dac_override dac_read_search fowner fsetid ipc_owner sys_nice sys_rawio net_bind_service };
421
422 allow xdm_t self:process { setexec setpgid getattr getcap setcap getsched getsession setsched setrlimit signal_perms setkeycreate };
423 tunable_policy(`deny_ptrace',`',`
424 allow xdm_t self:process ptrace;
425 ')
426
427 allow xdm_t self:fifo_file rw_fifo_file_perms;
428 allow xdm_t self:shm create_shm_perms;
429 allow xdm_t self:sem create_sem_perms;
430 allow xdm_t self:unix_stream_socket { connectto create_stream_socket_perms };
431 allow xdm_t self:unix_dgram_socket { create_socket_perms sendto };
432 allow xdm_t self:tcp_socket create_stream_socket_perms;
433 allow xdm_t self:udp_socket create_socket_perms;
434 allow xdm_t self:netlink_kobject_uevent_socket create_socket_perms;
435 allow xdm_t self:socket create_socket_perms;
436 allow xdm_t self:appletalk_socket create_socket_perms;
437 allow xdm_t self:key { search link write };
438
439 allow xdm_t xauth_home_t:file manage_file_perms;
440
441 allow xdm_t xconsole_device_t:fifo_file { getattr_fifo_file_perms setattr_fifo_file_perms };
442 manage_dirs_pattern(xdm_t, xkb_var_lib_t, xkb_var_lib_t)
443 manage_files_pattern(xdm_t, xkb_var_lib_t, xkb_var_lib_t)
444
445 manage_files_pattern(xdm_t, xdm_home_t, xdm_home_t)
446 userdom_user_home_dir_filetrans(xdm_t, xdm_home_t, file)
447 userdom_admin_home_dir_filetrans(xdm_t, xdm_home_t, file)
448 xserver_filetrans_home_content(xdm_t)
449 xserver_filetrans_admin_home_content(xdm_t)
450
451 #Handle mislabeled files in homedir
452 userdom_delete_user_home_content_files(xdm_t)
453 userdom_signull_unpriv_users(xdm_t)
454 userdom_dontaudit_read_admin_home_lnk_files(xdm_t)
455
456 # Allow gdm to run gdm-binary
457 can_exec(xdm_t, xdm_exec_t)
458
459 allow xdm_t xdm_lock_t:file manage_file_perms;
460 files_lock_filetrans(xdm_t, xdm_lock_t, file)
461
462 read_lnk_files_pattern(xdm_t, xdm_etc_t, xdm_etc_t)
463 read_files_pattern(xdm_t, xdm_etc_t, xdm_etc_t)
464 # wdm has its own config dir /etc/X11/wdm
465 # this is ugly, daemons should not create files under /etc!
466 manage_files_pattern(xdm_t, xdm_rw_etc_t, xdm_rw_etc_t)
467
468 manage_dirs_pattern(xdm_t, xdm_tmp_t, xdm_tmp_t)
469 manage_files_pattern(xdm_t, xdm_tmp_t, xdm_tmp_t)
470 manage_lnk_files_pattern(xdm_t, xdm_tmp_t, xdm_tmp_t)
471 manage_sock_files_pattern(xdm_t, xdm_tmp_t, xdm_tmp_t)
472 files_tmp_filetrans(xdm_t, xdm_tmp_t, { file dir sock_file lnk_file })
473 relabelfrom_dirs_pattern(xdm_t, xdm_tmp_t, xdm_tmp_t)
474 relabelfrom_files_pattern(xdm_t, xdm_tmp_t, xdm_tmp_t)
475 can_exec(xdm_t, xdm_tmp_t)
476
477 manage_dirs_pattern(xdm_t, xdm_tmpfs_t, xdm_tmpfs_t)
478 manage_files_pattern(xdm_t, xdm_tmpfs_t, xdm_tmpfs_t)
479 manage_lnk_files_pattern(xdm_t, xdm_tmpfs_t, xdm_tmpfs_t)
480 manage_fifo_files_pattern(xdm_t, xdm_tmpfs_t, xdm_tmpfs_t)
481 manage_sock_files_pattern(xdm_t, xdm_tmpfs_t, xdm_tmpfs_t)
482
483 manage_files_pattern(xdm_t, user_fonts_t, user_fonts_t)
484
485 files_search_spool(xdm_t)
486 manage_dirs_pattern(xdm_t, xdm_spool_t, xdm_spool_t)
487 manage_files_pattern(xdm_t, xdm_spool_t, xdm_spool_t)
488 files_spool_filetrans(xdm_t, xdm_spool_t, { file dir })
489
490 manage_dirs_pattern(xdm_t, xdm_var_lib_t, xdm_var_lib_t)
491 manage_files_pattern(xdm_t, xdm_var_lib_t, xdm_var_lib_t)
492 manage_lnk_files_pattern(xdm_t, xdm_var_lib_t, xdm_var_lib_t)
493 manage_sock_files_pattern(xdm_t, xdm_var_lib_t, xdm_var_lib_t)
494 files_var_lib_filetrans(xdm_t, xdm_var_lib_t, { file dir })
495 # Read machine-id
496 files_read_var_lib_files(xdm_t)
497
498 manage_dirs_pattern(xdm_t, xdm_var_run_t, xdm_var_run_t)
499 manage_files_pattern(xdm_t, xdm_var_run_t, xdm_var_run_t)
500 manage_fifo_files_pattern(xdm_t, xdm_var_run_t, xdm_var_run_t)
501 manage_sock_files_pattern(xdm_t, xdm_var_run_t, xdm_var_run_t)
502 files_pid_filetrans(xdm_t, xdm_var_run_t, { dir file fifo_file sock_file })
503
504 allow xdm_t xserver_t:process { signal signull };
505 allow xdm_t xserver_t:unix_stream_socket connectto;
506
507 allow xdm_t xserver_tmp_t:sock_file rw_sock_file_perms;
508 allow xdm_t xserver_tmp_t:dir { setattr_dir_perms list_dir_perms };
509
510 # transition to the xdm xserver
511 domtrans_pattern(xdm_t, xserver_exec_t, xserver_t)
512
513 ps_process_pattern(xserver_t, xdm_t)
514 allow xserver_t xdm_t:process signal;
515 allow xdm_t xserver_t:process { noatsecure siginh rlimitinh signal sigkill };
516
517 allow xdm_t xserver_t:shm rw_shm_perms;
518 read_files_pattern(xdm_t, xserver_t, xserver_t)
519
520 # connect to xdm xserver over stream socket
521 stream_connect_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t, xserver_t)
522
523 # Remove /tmp/.X11-unix/X0.
524 delete_files_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t)
525 delete_sock_files_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t)
526
527 manage_dirs_pattern(xdm_t, xdm_log_t, xdm_log_t)
528 manage_files_pattern(xdm_t, xdm_log_t, xdm_log_t)
529 manage_fifo_files_pattern(xdm_t, xdm_log_t, xdm_log_t)
530 logging_log_filetrans(xdm_t, xdm_log_t, { dir file })
531
532 manage_dirs_pattern(xdm_t, xserver_log_t, xserver_log_t)
533 manage_files_pattern(xdm_t, xserver_log_t, xserver_log_t)
534 manage_fifo_files_pattern(xdm_t, xserver_log_t, xserver_log_t)
535
536 kernel_read_system_state(xdm_t)
537 kernel_read_device_sysctls(xdm_t)
538 kernel_read_kernel_sysctls(xdm_t)
539 kernel_read_net_sysctls(xdm_t)
540 kernel_read_network_state(xdm_t)
541 kernel_request_load_module(xdm_t)
542 kernel_stream_connect(xdm_t)
543
544 corecmd_exec_shell(xdm_t)
545 corecmd_exec_bin(xdm_t)
546 corecmd_dontaudit_access_all_executables(xdm_t)
547
548 corenet_all_recvfrom_unlabeled(xdm_t)
549 corenet_all_recvfrom_netlabel(xdm_t)
550 corenet_tcp_sendrecv_generic_if(xdm_t)
551 corenet_udp_sendrecv_generic_if(xdm_t)
552 corenet_tcp_sendrecv_generic_node(xdm_t)
553 corenet_udp_sendrecv_generic_node(xdm_t)
554 corenet_tcp_sendrecv_all_ports(xdm_t)
555 corenet_udp_sendrecv_all_ports(xdm_t)
556 corenet_tcp_bind_generic_node(xdm_t)
557 corenet_udp_bind_generic_node(xdm_t)
558 corenet_udp_bind_ipp_port(xdm_t)
559 corenet_udp_bind_xdmcp_port(xdm_t)
560 corenet_tcp_connect_all_ports(xdm_t)
561 corenet_sendrecv_all_client_packets(xdm_t)
562 # xdm tries to bind to biff_port_t
563 corenet_dontaudit_tcp_bind_all_ports(xdm_t)
564
565 dev_rwx_zero(xdm_t)
566 dev_read_rand(xdm_t)
567 dev_rw_sysfs(xdm_t)
568 dev_getattr_framebuffer_dev(xdm_t)
569 dev_setattr_framebuffer_dev(xdm_t)
570 dev_getattr_mouse_dev(xdm_t)
571 dev_setattr_mouse_dev(xdm_t)
572 dev_rw_apm_bios(xdm_t)
573 dev_rw_input_dev(xdm_t)
574 dev_setattr_apm_bios_dev(xdm_t)
575 dev_rw_dri(xdm_t)
576 dev_rw_agp(xdm_t)
577 dev_getattr_xserver_misc_dev(xdm_t)
578 dev_setattr_xserver_misc_dev(xdm_t)
579 dev_rw_xserver_misc(xdm_t)
580 dev_getattr_misc_dev(xdm_t)
581 dev_setattr_misc_dev(xdm_t)
582 dev_dontaudit_rw_misc(xdm_t)
583 dev_read_video_dev(xdm_t)
584 dev_write_video_dev(xdm_t)
585 dev_setattr_video_dev(xdm_t)
586 dev_getattr_scanner_dev(xdm_t)
587 dev_setattr_scanner_dev(xdm_t)
588 dev_read_sound(xdm_t)
589 dev_write_sound(xdm_t)
590 dev_getattr_power_mgmt_dev(xdm_t)
591 dev_setattr_power_mgmt_dev(xdm_t)
592 dev_getattr_null_dev(xdm_t)
593 dev_setattr_null_dev(xdm_t)
594
595 domain_use_interactive_fds(xdm_t)
596 # Do not audit denied probes of /proc.
597 domain_dontaudit_read_all_domains_state(xdm_t)
598 domain_dontaudit_ptrace_all_domains(xdm_t)
599 domain_dontaudit_signal_all_domains(xdm_t)
600 domain_dontaudit_getattr_all_entry_files(xdm_t)
601
602 files_read_etc_files(xdm_t)
603 files_read_var_files(xdm_t)
604 files_read_etc_runtime_files(xdm_t)
605 files_exec_etc_files(xdm_t)
606 files_list_mnt(xdm_t)
607 # Read /usr/share/terminfo/l/linux and /usr/share/icons/default/index.theme...
608 files_read_usr_files(xdm_t)
609 # Poweroff wants to create the /poweroff file when run from xdm
610 files_create_boot_flag(xdm_t)
611 files_dontaudit_getattr_boot_dirs(xdm_t)
612 files_dontaudit_write_usr_files(xdm_t)
613 files_dontaudit_access_check_etc(xdm_t)
614 files_dontaudit_getattr_all_dirs(xdm_t)
615 files_dontaudit_getattr_all_symlinks(xdm_t)
616 files_dontaudit_getattr_all_tmp_sockets(xdm_t)
617 files_dontaudit_all_access_check(xdm_t)
618
619 fs_getattr_all_fs(xdm_t)
620 fs_search_auto_mountpoints(xdm_t)
621 fs_rw_anon_inodefs_files(xdm_t)
622 fs_mount_tmpfs(xdm_t)
623 fs_list_inotifyfs(xdm_t)
624 fs_dontaudit_list_noxattr_fs(xdm_t)
625 fs_dontaudit_read_noxattr_fs_files(xdm_t)
626 fs_manage_cgroup_dirs(xdm_t)
627 fs_manage_cgroup_files(xdm_t)
628
629 mls_socket_write_to_clearance(xdm_t)
630
631 storage_dontaudit_read_fixed_disk(xdm_t)
632 storage_dontaudit_write_fixed_disk(xdm_t)
633 storage_dontaudit_setattr_fixed_disk_dev(xdm_t)
634 storage_dontaudit_raw_read_removable_device(xdm_t)
635 storage_dontaudit_raw_write_removable_device(xdm_t)
636 storage_dontaudit_setattr_removable_dev(xdm_t)
637 storage_dontaudit_rw_scsi_generic(xdm_t)
638 storage_dontaudit_rw_fuse(xdm_t)
639
640 term_setattr_console(xdm_t)
641 term_use_console(xdm_t)
642 term_use_virtio_console(xdm_t)
643 term_use_unallocated_ttys(xdm_t)
644 term_setattr_unallocated_ttys(xdm_t)
645 term_relabel_all_ttys(xdm_t)
646 term_relabel_unallocated_ttys(xdm_t)
647
648 auth_domtrans_pam_console(xdm_t)
649 auth_manage_pam_pid(xdm_t)
650 auth_manage_pam_console_data(xdm_t)
651 auth_signal_pam(xdm_t)
652 auth_rw_faillog(xdm_t)
653 auth_write_login_records(xdm_t)
654
655 # Run telinit->init to shutdown.
656 init_telinit(xdm_t)
657 init_dbus_chat(xdm_t)
658
659 libs_exec_lib_files(xdm_t)
660
661 logging_read_generic_logs(xdm_t)
662
663 miscfiles_search_man_pages(xdm_t)
664 miscfiles_read_localization(xdm_t)
665 miscfiles_read_fonts(xdm_t)
666 miscfiles_manage_fonts_cache(xdm_t)
667 miscfiles_manage_localization(xdm_t)
668 miscfiles_read_hwdata(xdm_t)
669
670 userdom_dontaudit_use_unpriv_user_fds(xdm_t)
671 userdom_create_all_users_keys(xdm_t)
672 # for .dmrc
673 userdom_read_user_home_content_files(xdm_t)
674 # Search /proc for any user domain processes.
675 userdom_read_all_users_state(xdm_t)
676 userdom_signal_all_users(xdm_t)
677 userdom_stream_connect(xdm_t)
678 userdom_manage_user_tmp_dirs(xdm_t)
679 userdom_manage_user_tmp_files(xdm_t)
680 userdom_manage_user_tmp_sockets(xdm_t)
681 userdom_manage_tmpfs_role(system_r, xdm_t)
682
683 application_signal(xdm_t)
684
685 xserver_rw_session(xdm_t, xdm_tmpfs_t)
686 xserver_unconfined(xdm_t)
687 xserver_domtrans_xauth(xdm_t)
688
689 ifndef(`distro_redhat',`
690 allow xdm_t self:process { execheap execmem };
691 ')
692
693 ifdef(`distro_rhel4',`
694 allow xdm_t self:process { execheap execmem };
695 ')
696
697 tunable_policy(`use_fusefs_home_dirs',`
698 fs_manage_fusefs_dirs(xdm_t)
699 fs_manage_fusefs_files(xdm_t)
700 ')
701
702 tunable_policy(`use_nfs_home_dirs',`
703 fs_manage_nfs_dirs(xdm_t)
704 fs_manage_nfs_files(xdm_t)
705 fs_manage_nfs_symlinks(xdm_t)
706 fs_exec_nfs_files(xdm_t)
707 ')
708
709 tunable_policy(`use_samba_home_dirs',`
710 fs_manage_cifs_dirs(xdm_t)
711 fs_manage_cifs_files(xdm_t)
712 fs_manage_cifs_symlinks(xdm_t)
713 fs_exec_cifs_files(xdm_t)
714 ')
715
716 optional_policy(`
717 tunable_policy(`xdm_exec_bootloader',`
718 bootloader_exec(xdm_t)
719 files_read_boot_files(xdm_t)
720 files_read_boot_symlinks(xdm_t)
721 ')
722 ')
723
724 tunable_policy(`xdm_sysadm_login',`
725 userdom_xsession_spec_domtrans_all_users(xdm_t)
726 # FIXME:
727 # xserver_rw_session_template(xdm,userdomain)
728 ',`
729 userdom_xsession_spec_domtrans_unpriv_users(xdm_t)
730 # FIXME:
731 # xserver_rw_session_template(xdm,unpriv_userdomain)
732 # dontaudit xserver_t sysadm_t:shm { unix_read unix_write };
733 # allow xserver_t xdm_tmpfs_t:file rw_file_perms;
734 ')
735
736 optional_policy(`
737 accountsd_read_lib_files(xdm_t)
738 ')
739
740 optional_policy(`
741 acct_dontaudit_list_data(xdm_t)
742 ')
743
744 optional_policy(`
745 alsa_domtrans(xdm_t)
746 alsa_read_rw_config(xdm_t)
747 ')
748
749 optional_policy(`
750 consolekit_dbus_chat(xdm_t)
751 consolekit_read_log(xdm_t)
752 ')
753
754 optional_policy(`
755 consoletype_exec(xdm_t)
756 ')
757
758 optional_policy(`
759 # Use dbus to start other processes as xdm_t
760 dbus_role_template(xdm, system_r, xdm_t)
761
762 #fixes for xfce4-notifyd
763 allow xdm_dbusd_t self:unix_stream_socket connectto;
764 allow xdm_dbusd_t xserver_t:unix_stream_socket connectto;
765
766 dontaudit xdm_dbusd_t xdm_var_lib_t:dir search_dir_perms;
767 xserver_xdm_append_log(xdm_dbusd_t)
768 xserver_read_xdm_pid(xdm_dbusd_t)
769
770 miscfiles_read_fonts(xdm_dbusd_t)
771
772 corecmd_bin_entry_type(xdm_t)
773
774 dbus_system_bus_client(xdm_t)
775
776 optional_policy(`
777 bluetooth_dbus_chat(xdm_t)
778 ')
779
780 optional_policy(`
781 cpufreqselector_dbus_chat(xdm_t)
782 ')
783
784 optional_policy(`
785 devicekit_dbus_chat_disk(xdm_t)
786 devicekit_dbus_chat_power(xdm_t)
787 ')
788
789 optional_policy(`
790 hal_dbus_chat(xdm_t)
791 ')
792
793 optional_policy(`
794 networkmanager_dbus_chat(xdm_t)
795 ')
796 ')
797
798 optional_policy(`
799 # Talk to the console mouse server.
800 gpm_stream_connect(xdm_t)
801 gpm_setattr_gpmctl(xdm_t)
802 ')
803
804 optional_policy(`
805 gnome_exec_keyringd(xdm_t)
806 gnome_manage_config(xdm_t)
807 gnome_manage_gconf_home_files(xdm_t)
808 gnome_filetrans_home_content(xdm_t)
809 gnome_read_config(xdm_t)
810 gnome_read_usr_config(xdm_t)
811 gnome_read_gconf_config(xdm_t)
812 gnome_transition_gkeyringd(xdm_t)
813 ')
814
815 optional_policy(`
816 hostname_exec(xdm_t)
817 ')
818
819 optional_policy(`
820 loadkeys_exec(xdm_t)
821 ')
822
823 optional_policy(`
824 locallogin_signull(xdm_t)
825 ')
826
827 optional_policy(`
828 # Do not audit attempts to check whether user root has email
829 mta_dontaudit_getattr_spool_files(xdm_t)
830 ')
831
832 optional_policy(`
833 policykit_dbus_chat(xdm_t)
834 policykit_domtrans_auth(xdm_t)
835 policykit_read_lib(xdm_t)
836 policykit_read_reload(xdm_t)
837 policykit_signal_auth(xdm_t)
838 ')
839
840 optional_policy(`
841 pcscd_stream_connect(xdm_t)
842 ')
843
844 optional_policy(`
845 plymouthd_search_spool(xdm_t)
846 plymouthd_exec_plymouth(xdm_t)
847 plymouthd_stream_connect(xdm_t)
848 plymouthd_read_log(xdm_t)
849 ')
850
851 optional_policy(`
852 pulseaudio_exec(xdm_t)
853 pulseaudio_dbus_chat(xdm_t)
854 pulseaudio_stream_connect(xdm_t)
855 ')
856
857 optional_policy(`
858 resmgr_stream_connect(xdm_t)
859 ')
860
861 optional_policy(`
862 rhev_stream_connect_agentd(xdm_t)
863 rhev_read_pid_files_agentd(xdm_t)
864 ')
865
866 # On crash gdm execs gdb to dump stack
867 optional_policy(`
868 rpm_exec(xdm_t)
869 rpm_read_db(xdm_t)
870 rpm_dontaudit_manage_db(xdm_t)
871 rpm_dontaudit_dbus_chat(xdm_t)
872 ')
873
874 optional_policy(`
875 rtkit_scheduled(xdm_t)
876 ')
877
878 optional_policy(`
879 seutil_sigchld_newrole(xdm_t)
880 ')
881
882 optional_policy(`
883 ssh_signull(xdm_t)
884 ')
885
886 optional_policy(`
887 shutdown_domtrans(xdm_t)
888 ')
889
890 optional_policy(`
891 udev_read_db(xdm_t)
892 ')
893
894 optional_policy(`
895 unconfined_signal(xdm_t)
896 ')
897
898 optional_policy(`
899 userhelper_dontaudit_search_config(xdm_t)
900 ')
901
902 optional_policy(`
903 usermanage_read_crack_db(xdm_t)
904 ')
905
906 optional_policy(`
907 vdagent_stream_connect(xdm_t)
908 ')
909
910 optional_policy(`
911 wm_exec(xdm_t)
912 ')
913
914 optional_policy(`
915 xfs_stream_connect(xdm_t)
916 ')
917
918 ########################################
919 #
920 # X server local policy
921 #
922
923 # X Object Manager rules
924 type_transition xserver_t xserver_t:x_drawable root_xdrawable_t;
925 type_transition xserver_t xserver_t:x_colormap root_xcolormap_t;
926 type_transition root_xdrawable_t input_xevent_t:x_event root_input_xevent_t;
927
928 allow xserver_t { root_xdrawable_t x_domain }:x_drawable send;
929 allow xserver_t input_xevent_t:x_event send;
930
931 # setuid/setgid for the wrapper program to change UID
932 # sys_rawio is for iopl access - should not be needed for frame-buffer
933 # sys_admin, locking shared mem? chowning IPC message queues or semaphores?
934 # admin of APM bios?
935 # sys_nice is so that the X server can set a negative nice value
936 # execheap needed until the X module loader is fixed.
937 # NVIDIA Needs execstack
938
939 allow xserver_t self:capability { dac_override fowner fsetid setgid setuid ipc_owner sys_rawio sys_admin sys_nice sys_tty_config mknod net_bind_service };
940
941 dontaudit xserver_t self:capability chown;
942 allow xserver_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
943 allow xserver_t self:fd use;
944 allow xserver_t self:fifo_file rw_fifo_file_perms;
945 allow xserver_t self:sock_file read_sock_file_perms;
946 allow xserver_t self:shm create_shm_perms;
947 allow xserver_t self:sem create_sem_perms;
948 allow xserver_t self:msgq create_msgq_perms;
949 allow xserver_t self:msg { send receive };
950 allow xserver_t self:unix_dgram_socket { create_socket_perms sendto };
951 allow xserver_t self:unix_stream_socket { create_stream_socket_perms connectto };
952 allow xserver_t self:tcp_socket create_stream_socket_perms;
953 allow xserver_t self:udp_socket create_socket_perms;
954 allow xserver_t self:netlink_selinux_socket create_socket_perms;
955 allow xserver_t self:netlink_kobject_uevent_socket create_socket_perms;
956
957 allow xserver_t { input_xevent_t input_xevent_type }:x_event send;
958
959 domtrans_pattern(xserver_t, xauth_exec_t, xauth_t)
960
961 allow xserver_t xauth_home_t:file read_file_perms;
962
963 manage_dirs_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t)
964 manage_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t)
965 manage_sock_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t)
966 files_tmp_filetrans(xserver_t, xserver_tmp_t, { file dir sock_file })
967
968 filetrans_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t, sock_file)
969
970 manage_dirs_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
971 manage_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
972 manage_lnk_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
973 manage_fifo_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
974 manage_sock_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
975 fs_tmpfs_filetrans(xserver_t, xserver_tmpfs_t, { dir file lnk_file sock_file fifo_file })
976
977 manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t)
978 manage_lnk_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t)
979 files_search_var_lib(xserver_t)
980
981 manage_dirs_pattern(xserver_t, xserver_var_lib_t, xserver_var_lib_t)
982 manage_files_pattern(xserver_t, xserver_var_lib_t, xserver_var_lib_t)
983 files_var_lib_filetrans(xserver_t, xserver_var_lib_t, dir)
984
985 manage_dirs_pattern(xserver_t, xserver_var_run_t, xserver_var_run_t)
986 manage_files_pattern(xserver_t, xserver_var_run_t, xserver_var_run_t)
987 manage_sock_files_pattern(xserver_t, xdm_var_run_t, xdm_var_run_t)
988 files_pid_filetrans(xserver_t, xserver_var_run_t, { file dir })
989
990 # Create files in /var/log with the xserver_log_t type.
991 manage_files_pattern(xserver_t, xserver_log_t, xserver_log_t)
992 logging_log_filetrans(xserver_t, xserver_log_t, file)
993 manage_files_pattern(xserver_t, xdm_log_t, xdm_log_t)
994
995 kernel_read_system_state(xserver_t)
996 kernel_read_device_sysctls(xserver_t)
997 kernel_read_modprobe_sysctls(xserver_t)
998 # Xorg wants to check if kernel is tainted
999 kernel_read_kernel_sysctls(xserver_t)
1000 kernel_write_proc_files(xserver_t)
1001 kernel_request_load_module(xserver_t)
1002
1003 # Run helper programs in xserver_t.
1004 corecmd_exec_bin(xserver_t)
1005 corecmd_exec_shell(xserver_t)
1006
1007 corenet_all_recvfrom_unlabeled(xserver_t)
1008 corenet_all_recvfrom_netlabel(xserver_t)
1009 corenet_tcp_sendrecv_generic_if(xserver_t)
1010 corenet_udp_sendrecv_generic_if(xserver_t)
1011 corenet_tcp_sendrecv_generic_node(xserver_t)
1012 corenet_udp_sendrecv_generic_node(xserver_t)
1013 corenet_tcp_sendrecv_all_ports(xserver_t)
1014 corenet_udp_sendrecv_all_ports(xserver_t)
1015 corenet_tcp_bind_generic_node(xserver_t)
1016 corenet_tcp_bind_xserver_port(xserver_t)
1017 corenet_tcp_connect_all_ports(xserver_t)
1018 corenet_sendrecv_xserver_server_packets(xserver_t)
1019 corenet_sendrecv_all_client_packets(xserver_t)
1020
1021 dev_rw_sysfs(xserver_t)
1022 dev_rw_mouse(xserver_t)
1023 dev_rw_mtrr(xserver_t)
1024 dev_rw_apm_bios(xserver_t)
1025 dev_rw_agp(xserver_t)
1026 dev_rw_framebuffer(xserver_t)
1027 dev_manage_dri_dev(xserver_t)
1028 dev_create_generic_dirs(xserver_t)
1029 dev_setattr_generic_dirs(xserver_t)
1030 # raw memory access is needed if not using the frame buffer
1031 dev_read_raw_memory(xserver_t)
1032 dev_wx_raw_memory(xserver_t)
1033 # for other device nodes such as the NVidia binary-only driver
1034 dev_manage_xserver_misc(xserver_t)
1035 dev_filetrans_xserver_misc(xserver_t)
1036
1037 # read events - the synaptics touchpad driver reads raw events
1038 dev_rw_input_dev(xserver_t)
1039 dev_read_raw_memory(xserver_t)
1040 dev_write_raw_memory(xserver_t)
1041 dev_rwx_zero(xserver_t)
1042
1043 domain_dontaudit_read_all_domains_state(xserver_t)
1044 domain_signal_all_domains(xserver_t)
1045
1046 files_read_etc_files(xserver_t)
1047 files_read_etc_runtime_files(xserver_t)
1048 files_read_usr_files(xserver_t)
1049 files_rw_tmpfs_files(xserver_t)
1050
1051 # brought on by rhgb
1052 files_search_mnt(xserver_t)
1053 # for nscd
1054 files_dontaudit_search_pids(xserver_t)
1055
1056 fs_getattr_xattr_fs(xserver_t)
1057 fs_search_nfs(xserver_t)
1058 fs_search_auto_mountpoints(xserver_t)
1059 fs_search_ramfs(xserver_t)
1060 fs_rw_tmpfs_files(xserver_t)
1061
1062 mls_xwin_read_to_clearance(xserver_t)
1063 mls_process_write_to_clearance(xserver_t)
1064 mls_file_read_to_clearance(xserver_t)
1065 mls_file_write_all_levels(xserver_t)
1066 mls_file_upgrade(xserver_t)
1067
1068 selinux_validate_context(xserver_t)
1069 selinux_compute_access_vector(xserver_t)
1070 selinux_compute_create_context(xserver_t)
1071
1072 auth_use_nsswitch(xserver_t)
1073
1074 init_getpgid(xserver_t)
1075
1076 term_setattr_unallocated_ttys(xserver_t)
1077 term_use_unallocated_ttys(xserver_t)
1078
1079 locallogin_use_fds(xserver_t)
1080
1081 logging_send_syslog_msg(xserver_t)
1082 logging_send_audit_msgs(xserver_t)
1083
1084 miscfiles_read_localization(xserver_t)
1085 miscfiles_read_fonts(xserver_t)
1086 miscfiles_read_hwdata(xserver_t)
1087
1088 # read x_contexts
1089 seutil_read_default_contexts(xserver_t)
1090 seutil_read_config(xserver_t)
1091 seutil_read_file_contexts(xserver_t)
1092
1093 userdom_search_user_home_dirs(xserver_t)
1094 userdom_use_user_ttys(xserver_t)
1095 userdom_setattr_user_ttys(xserver_t)
1096 userdom_read_user_tmp_files(xserver_t)
1097 userdom_rw_user_tmpfs_files(xserver_t)
1098
1099 xserver_use_user_fonts(xserver_t)
1100
1101 ifndef(`distro_redhat',`
1102 allow xserver_t self:process { execmem execheap execstack };
1103 domain_mmap_low_uncond(xserver_t)
1104 ')
1105
1106 ifdef(`distro_rhel4',`
1107 allow xserver_t self:process { execmem execheap execstack };
1108 ')
1109
1110 ifdef(`enable_mls',`
1111 range_transition xserver_t xserver_tmp_t:sock_file s0 - mls_systemhigh;
1112 range_transition xserver_t xserver_t:x_drawable s0 - mls_systemhigh;
1113 ')
1114
1115 tunable_policy(`!xserver_object_manager',`
1116 # should be xserver_unconfined(xserver_t),
1117 # but typeattribute doesnt work in conditionals
1118
1119 allow xserver_t xserver_t:x_server *;
1120 allow xserver_t { x_domain root_xdrawable_t }:x_drawable *;
1121 allow xserver_t xserver_t:x_screen *;
1122 allow xserver_t x_domain:x_gc *;
1123 allow xserver_t { x_domain root_xcolormap_t }:x_colormap *;
1124 allow xserver_t xproperty_type:x_property *;
1125 allow xserver_t xselection_type:x_selection *;
1126 allow xserver_t x_domain:x_cursor *;
1127 allow xserver_t x_domain:x_client *;
1128 allow xserver_t { x_domain xserver_t }:x_device *;
1129 allow xserver_t { x_domain xserver_t }:x_pointer *;
1130 allow xserver_t { x_domain xserver_t }:x_keyboard *;
1131 allow xserver_t xextension_type:x_extension *;
1132 allow xserver_t { x_domain xserver_t }:x_resource *;
1133 allow xserver_t xevent_type:{ x_event x_synthetic_event } *;
1134 ')
1135
1136 optional_policy(`
1137 apm_stream_connect(xserver_t)
1138 ')
1139
1140 optional_policy(`
1141 auth_search_pam_console_data(xserver_t)
1142 ')
1143
1144 optional_policy(`
1145 consolekit_read_state(xserver_t)
1146 ')
1147
1148 optional_policy(`
1149 devicekit_signal_power(xserver_t)
1150 ')
1151
1152 optional_policy(`
1153 getty_use_fds(xserver_t)
1154 ')
1155
1156 optional_policy(`
1157 modutils_domtrans_insmod(xserver_t)
1158 ')
1159
1160 optional_policy(`
1161 rhgb_getpgid(xserver_t)
1162 rhgb_signal(xserver_t)
1163 ')
1164
1165 optional_policy(`
1166 setrans_translate_context(xserver_t)
1167 ')
1168
1169 optional_policy(`
1170 sandbox_rw_xserver_tmpfs_files(xserver_t)
1171 ')
1172
1173 optional_policy(`
1174 udev_read_db(xserver_t)
1175 ')
1176
1177 optional_policy(`
1178 unconfined_domain(xserver_t)
1179 unconfined_domtrans(xserver_t)
1180 ')
1181
1182 optional_policy(`
1183 userhelper_search_config(xserver_t)
1184 ')
1185
1186 optional_policy(`
1187 wine_rw_shm(xserver_t)
1188 ')
1189
1190 optional_policy(`
1191 xfs_stream_connect(xserver_t)
1192 ')
1193
1194 ########################################
1195 #
1196 # XDM Xserver local policy
1197 #
1198 # cjp: when xdm is configurable via tunable these
1199 # rules will be enabled only when xdm is enabled
1200
1201 allow xserver_t xdm_t:process { signal getpgid };
1202 allow xserver_t xdm_t:shm rw_shm_perms;
1203
1204 # NB we do NOT allow xserver_t xdm_var_lib_t:dir, only access to an open
1205 # handle of a file inside the dir!!!
1206 allow xserver_t xdm_var_lib_t:file read_file_perms;
1207 dontaudit xserver_t xdm_var_lib_t:dir search_dir_perms;
1208
1209 read_files_pattern(xserver_t, xdm_var_run_t, xdm_var_run_t)
1210
1211 # Label pid and temporary files with derived types.
1212 manage_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
1213 manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
1214 manage_sock_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
1215
1216 # Run xkbcomp.
1217 allow xserver_t xkb_var_lib_t:lnk_file read_lnk_file_perms;
1218 can_exec(xserver_t, xkb_var_lib_t)
1219
1220 # VNC v4 module in X server
1221 corenet_tcp_bind_vnc_port(xserver_t)
1222
1223 init_use_fds(xserver_t)
1224
1225 # FIXME: After per user fonts are properly working
1226 # xserver_t may no longer have any reason
1227 # to read ROLE_home_t - examine this in more detail
1228 # (xauth?)
1229 userdom_read_user_home_content_files(xserver_t)
1230 userdom_read_all_users_state(xserver_t)
1231
1232 xserver_use_user_fonts(xserver_t)
1233
1234 tunable_policy(`use_nfs_home_dirs',`
1235 fs_manage_nfs_dirs(xserver_t)
1236 fs_manage_nfs_files(xserver_t)
1237 fs_manage_nfs_symlinks(xserver_t)
1238 ')
1239
1240 tunable_policy(`use_fusefs_home_dirs',`
1241 fs_manage_fusefs_dirs(xserver_t)
1242 fs_manage_fusefs_files(xserver_t)
1243 ')
1244
1245 tunable_policy(`use_samba_home_dirs',`
1246 fs_manage_cifs_dirs(xserver_t)
1247 fs_manage_cifs_files(xserver_t)
1248 fs_manage_cifs_symlinks(xserver_t)
1249 ')
1250
1251 optional_policy(`
1252 dbus_system_bus_client(xserver_t)
1253
1254 optional_policy(`
1255 hal_dbus_chat(xserver_t)
1256 ')
1257 ')
1258
1259 optional_policy(`
1260 mono_rw_shm(xserver_t)
1261 ')
1262
1263 optional_policy(`
1264 rhgb_rw_shm(xserver_t)
1265 rhgb_rw_tmpfs_files(xserver_t)
1266 ')
1267
1268 optional_policy(`
1269 userhelper_search_config(xserver_t)
1270 ')
1271
1272 ########################################
1273 #
1274 # Rules common to all X window domains
1275 #
1276
1277 # Hacks
1278 # everyone can do override-redirect windows.
1279 # this could be used to spoof labels
1280 allow x_domain self:x_drawable override;
1281 # firefox gets nosy with other people's windows
1282 allow x_domain x_domain:x_drawable { list_child receive };
1283
1284 # X Server
1285 # can get X server attributes
1286 allow x_domain xserver_t:x_server getattr;
1287 # can grab the server
1288 allow x_domain xserver_t:x_server grab;
1289 # can read and write server-owned generic resources
1290 allow x_domain xserver_t:x_resource { read write };
1291 # can mess with own clients
1292 allow x_domain self:x_client { getattr manage destroy };
1293
1294 # X Protocol Extensions
1295 allow x_domain xextension_t:x_extension { query use };
1296 allow x_domain security_xextension_t:x_extension { query use };
1297
1298 # X Properties
1299 # can change properties of root window
1300 allow x_domain root_xdrawable_t:x_drawable { list_property get_property set_property };
1301 # can change properties of my own windows
1302 allow x_domain self:x_drawable { list_property get_property set_property };
1303 # can read and write cut buffers
1304 allow x_domain clipboard_xproperty_t:x_property { create read write append };
1305 # can read security labels
1306 allow x_domain seclabel_xproperty_t:x_property { getattr read };
1307 # can change all other properties
1308 allow x_domain xproperty_t:x_property { getattr create read write append destroy };
1309
1310 # X Windows
1311 # operations allowed on root windows
1312 allow x_domain root_xdrawable_t:x_drawable { getattr setattr list_child add_child remove_child send receive hide show };
1313 # operations allowed on my windows
1314 allow x_domain self:x_drawable { create destroy getattr setattr read write show hide list_child add_child remove_child manage send receive };
1315 allow x_domain self:x_drawable blend;
1316 # operations allowed on all windows
1317 allow x_domain x_domain:x_drawable { getattr get_property set_property remove_child };
1318
1319 # X Colormaps
1320 # can use the default colormap
1321 allow x_domain root_xcolormap_t:x_colormap { read use add_color remove_color install uninstall };
1322 # can create and use colormaps
1323 allow x_domain self:x_colormap *;
1324
1325 # X Devices
1326 # operations allowed on my own devices
1327 allow x_domain self:{ x_device x_pointer x_keyboard } *;
1328 # operations allowed on generic devices
1329 allow x_domain xserver_t:x_device { use getattr setattr getfocus setfocus bell grab freeze force_cursor };
1330 # operations allowed on core keyboard
1331 allow x_domain xserver_t:x_keyboard { use getattr setattr getfocus setfocus bell grab };
1332 # operations allowed on core pointer
1333 allow x_domain xserver_t:x_pointer { read use getattr setattr getfocus setfocus bell grab freeze force_cursor };
1334
1335 # all devices can generate input events
1336 allow x_domain root_xdrawable_t:x_drawable send;
1337 allow x_domain x_domain:x_drawable send;
1338 allow x_domain input_xevent_t:x_event send;
1339
1340 # dontaudit keyloggers repeatedly polling
1341 #dontaudit x_domain xserver_t:x_keyboard read;
1342
1343 # X Input
1344 # can receive default events
1345 allow x_domain xevent_t:{ x_event x_synthetic_event } receive;
1346 # can receive ICCCM events
1347 allow x_domain client_xevent_t:{ x_event x_synthetic_event } receive;
1348 # can send ICCCM events to the root window
1349 allow x_domain client_xevent_t:x_synthetic_event send;
1350 # can receive root window input events
1351 allow x_domain root_input_xevent_t:x_event receive;
1352
1353 # X Selections
1354 # can use the clipboard
1355 allow x_domain clipboard_xselection_t:x_selection { getattr setattr read };
1356 # can use default selections
1357 allow x_domain xselection_t:x_selection { getattr setattr read };
1358
1359 # Other X Objects
1360 # can create and use cursors
1361 allow x_domain self:x_cursor *;
1362 # can create and use graphics contexts
1363 allow x_domain self:x_gc *;
1364 # can read and write own objects
1365 allow x_domain self:x_resource { read write };
1366 # can mess with the screensaver
1367 allow x_domain xserver_t:x_screen { getattr saver_getattr };
1368
1369 # Device rules
1370 allow x_domain xserver_t:x_device { read getattr use setattr setfocus grab bell };
1371 allow x_domain xserver_t:x_screen getattr;
1372
1373 ########################################
1374 #
1375 # Rules for unconfined access to this module
1376 #
1377
1378 allow xserver_unconfined_type xserver_t:x_server *;
1379 allow xserver_unconfined_type xdrawable_type:x_drawable *;
1380 allow xserver_unconfined_type xserver_t:x_screen *;
1381 allow xserver_unconfined_type x_domain:x_gc *;
1382 allow xserver_unconfined_type xcolormap_type:x_colormap *;
1383 allow xserver_unconfined_type xproperty_type:x_property *;
1384 allow xserver_unconfined_type xselection_type:x_selection *;
1385 allow xserver_unconfined_type x_domain:x_cursor *;
1386 allow xserver_unconfined_type x_domain:x_client *;
1387 allow xserver_unconfined_type { x_domain xserver_t }:x_device *;
1388 allow xserver_unconfined_type { x_domain xserver_t }:x_pointer *;
1389 allow xserver_unconfined_type { x_domain xserver_t }:x_keyboard *;
1390 allow xserver_unconfined_type xextension_type:x_extension *;
1391 allow xserver_unconfined_type { x_domain xserver_t }:x_resource *;
1392 allow xserver_unconfined_type xevent_type:{ x_event x_synthetic_event } *;
1393
1394 tunable_policy(`! xserver_object_manager',`
1395 # should be xserver_unconfined(x_domain),
1396 # but typeattribute doesnt work in conditionals
1397
1398 allow x_domain xserver_t:x_server *;
1399 allow x_domain xdrawable_type:x_drawable *;
1400 allow x_domain xserver_t:x_screen *;
1401 allow x_domain x_domain:x_gc *;
1402 allow x_domain xcolormap_type:x_colormap *;
1403 allow x_domain xproperty_type:x_property *;
1404 allow x_domain xselection_type:x_selection *;
1405 allow x_domain x_domain:x_cursor *;
1406 allow x_domain x_domain:x_client *;
1407 allow x_domain { x_domain xserver_t }:x_device *;
1408 allow x_domain { x_domain xserver_t }:x_pointer *;
1409 allow x_domain { x_domain xserver_t }:x_keyboard *;
1410 allow x_domain xextension_type:x_extension *;
1411 allow x_domain { x_domain xserver_t }:x_resource *;
1412 allow x_domain xevent_type:{ x_event x_synthetic_event } *;
1413 ')
1414
1415 tunable_policy(`allow_xserver_execmem',`
1416 allow xserver_t self:process { execheap execmem execstack };
1417 ')
1418
1419 # Hack to handle the problem of using the nvidia blobs
1420 tunable_policy(`deny_execmem',`',`
1421 allow xdm_t self:process execmem;
1422 ')
1423
1424 tunable_policy(`allow_execstack',`
1425 allow xdm_t self:process { execstack execmem };
1426 ')
1427
1428 tunable_policy(`use_nfs_home_dirs',`
1429 fs_append_nfs_files(xdmhomewriter)
1430 ')
1431
1432 tunable_policy(`use_nfs_home_dirs',`
1433 fs_append_nfs_files(xdmhomewriter)
1434 ')
1435
1436 optional_policy(`
1437 unconfined_rw_shm(xserver_t)
1438 unconfined_execmem_rw_shm(xserver_t)
1439
1440 # xserver signals unconfined user on startx
1441 unconfined_signal(xserver_t)
1442 unconfined_getpgid(xserver_t)
1443 ')