]> git.ipfire.org Git - people/stevee/selinux-policy.git/blob - refpolicy/policy/modules/system/userdomain.if
add finger and bluetooth
[people/stevee/selinux-policy.git] / refpolicy / policy / modules / system / userdomain.if
1 ## <summary>Policy for user domains</summary>
2
3 #######################################
4 ## <summary>
5 ## The template containing rules common to unprivileged
6 ## users and administrative users.
7 ## </summary>
8 ## <desc>
9 ## <p>
10 ## This template creates a user domain, types, and
11 ## rules for the user's tty, pty, home directories,
12 ## tmp, and tmpfs files.
13 ## </p>
14 ## <p>
15 ## This generally should not be used, rather the
16 ## unpriv_user_template or admin_user_template should
17 ## be used.
18 ## </p>
19 ## </desc>
20 ## <param name="userdomain_prefix">
21 ## The prefix of the user domain (e.g., user
22 ## is the prefix for user_t).
23 ## </param>
24 #
25 template(`base_user_template',`
26
27 attribute $1_file_type;
28
29 type $1_t, userdomain;
30 domain_type($1_t)
31 corecmd_shell_entry_type($1_t)
32 domain_user_exemption_target($1_t)
33 role $1_r types $1_t;
34 allow system_r $1_r;
35
36 # user pseudoterminal
37 type $1_devpts_t;
38 term_user_pty($1_t,$1_devpts_t)
39 files_type($1_devpts_t)
40
41 # type for contents of home directory
42 type $1_home_t, $1_file_type, home_type;
43 files_type($1_home_t)
44 files_associate_tmp($1_home_t)
45 fs_associate_tmpfs($1_home_t)
46
47 # type of home directory
48 type $1_home_dir_t, home_dir_type, home_type;
49 files_type($1_home_dir_t)
50 files_associate_tmp($1_home_dir_t)
51 fs_associate_tmpfs($1_home_dir_t)
52
53 type $1_tmp_t, $1_file_type;
54 files_tmp_file($1_tmp_t)
55
56 type $1_tmpfs_t;
57 files_tmpfs_file($1_tmpfs_t)
58
59 # types for network-obtained content
60 type $1_untrusted_content_t, $1_file_type; #, customizable
61 files_type($1_untrusted_content_t)
62 files_poly_member($1_untrusted_content_t)
63
64 type $1_untrusted_content_tmp_t, $1_file_type; # customizable
65 files_tmp_file($1_untrusted_content_tmp_t)
66
67 type $1_tty_device_t;
68 term_tty($1_t,$1_tty_device_t)
69
70 ##############################
71 #
72 # Local policy
73 #
74
75 allow $1_t self:capability { setgid chown fowner };
76 dontaudit $1_t self:capability { sys_nice fsetid };
77 allow $1_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
78 allow $1_t self:process { ptrace setfscreate };
79 allow $1_t self:fd use;
80 allow $1_t self:fifo_file rw_file_perms;
81 allow $1_t self:unix_dgram_socket create_socket_perms;
82 allow $1_t self:unix_stream_socket create_stream_socket_perms;
83 allow $1_t self:unix_dgram_socket sendto;
84 allow $1_t self:unix_stream_socket connectto;
85 allow $1_t self:shm create_shm_perms;
86 allow $1_t self:sem create_sem_perms;
87 allow $1_t self:msgq create_msgq_perms;
88 allow $1_t self:msg { send receive };
89 dontaudit $1_t self:socket create;
90 allow $1_t self:udp_socket { sendto recvfrom };
91
92 # evolution and gnome-session try to create a netlink socket
93 dontaudit $1_t self:netlink_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown };
94 dontaudit $1_t self:netlink_route_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown nlmsg_read nlmsg_write };
95
96 # execute files in the home directory
97 can_exec($1_t,$1_home_t)
98
99 # full control of the home directory
100 allow $1_t $1_home_t:file { create_file_perms relabelfrom relabelto };
101 allow $1_t $1_home_t:lnk_file { create_lnk_perms relabelfrom relabelto };
102 allow $1_t $1_home_t:dir { create_dir_perms relabelfrom relabelto };
103 allow $1_t $1_home_t:sock_file { create_file_perms relabelfrom relabelto };
104 allow $1_t $1_home_t:fifo_file { create_file_perms relabelfrom relabelto };
105 allow $1_t $1_home_dir_t:dir { create_dir_perms relabelfrom relabelto };
106 type_transition $1_t $1_home_dir_t:{ dir notdevfile_class_set } $1_home_t;
107
108 can_exec($1_t,$1_tmp_t)
109
110 # user temporary files
111 allow $1_t $1_tmp_t:file create_file_perms;
112 allow $1_t $1_tmp_t:lnk_file create_lnk_perms;
113 allow $1_t $1_tmp_t:dir create_dir_perms;
114 allow $1_t $1_tmp_t:sock_file create_file_perms;
115 allow $1_t $1_tmp_t:fifo_file create_file_perms;
116 files_create_tmp_files($1_t, $1_tmp_t, { dir notdevfile_class_set })
117
118 # Bind to a Unix domain socket in /tmp.
119 # cjp: this is combination is not checked and should be removed
120 allow $1_t $1_tmp_t:unix_stream_socket name_bind;
121
122 allow $1_t $1_tmpfs_t:dir rw_dir_perms;
123 allow $1_t $1_tmpfs_t:file create_file_perms;
124 allow $1_t $1_tmpfs_t:lnk_file create_lnk_perms;
125 allow $1_t $1_tmpfs_t:sock_file create_file_perms;
126 allow $1_t $1_tmpfs_t:fifo_file create_file_perms;
127 fs_create_tmpfs_data($1_t,$1_tmpfs_t, { dir notdevfile_class_set } )
128
129 allow $1_t $1_tty_device_t:chr_file { setattr rw_file_perms };
130
131 # Allow user to relabel untrusted content
132 allow $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:dir { create_dir_perms relabelto relabelfrom };
133 allow $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:file { getattr unlink relabelto relabelfrom rename };
134
135 allow $1_t unpriv_userdomain:fd use;
136
137 # Instantiate derived domains for a number of programs.
138 # These derived domains encode both information about the calling
139 # user domain and the program, and allow us to maintain separation
140 # between different instances of the program being run by different
141 # user domains.
142 per_userdomain_templates($1,$1_t,$1_r)
143
144 kernel_read_kernel_sysctl($1_t)
145 selinux_get_fs_mount($1_t)
146 # Very permissive allowing every domain to see every type:
147 kernel_get_sysvipc_info($1_t)
148 # Find CDROM devices:
149 kernel_read_device_sysctl($1_t)
150
151 dev_rw_power_management($1_t)
152 # GNOME checks for usb and other devices:
153 dev_rw_usbfs($1_t)
154
155 corenet_tcp_sendrecv_all_if($1_t)
156 corenet_raw_sendrecv_all_if($1_t)
157 corenet_udp_sendrecv_all_if($1_t)
158 corenet_tcp_sendrecv_all_nodes($1_t)
159 corenet_raw_sendrecv_all_nodes($1_t)
160 corenet_udp_sendrecv_all_nodes($1_t)
161 corenet_tcp_sendrecv_all_ports($1_t)
162 corenet_udp_sendrecv_all_ports($1_t)
163 corenet_tcp_bind_all_nodes($1_t)
164 corenet_udp_bind_all_nodes($1_t)
165 corenet_udp_bind_generic_port($1_t)
166 corenet_tcp_connect_all_ports($1_t)
167
168 dev_read_input($1_t)
169 dev_read_misc($1_t)
170 dev_write_misc($1_t)
171 dev_write_snd_dev($1_t)
172 dev_read_snd_dev($1_t)
173 dev_read_snd_mixer_dev($1_t)
174 dev_write_snd_mixer_dev($1_t)
175 dev_read_rand($1_t)
176 dev_read_urand($1_t)
177 # open office is looking for the following
178 dev_getattr_agp_dev($1_t)
179 dev_dontaudit_rw_dri_dev($1_t)
180
181 fs_get_all_fs_quotas($1_t)
182 fs_getattr_all_fs($1_t)
183 fs_search_auto_mountpoints($1_t)
184
185 # cjp: some of this probably can be removed
186 selinux_get_fs_mount($1_t)
187 selinux_validate_context($1_t)
188 selinux_compute_access_vector($1_t)
189 selinux_compute_create_context($1_t)
190 selinux_compute_relabel_context($1_t)
191 selinux_compute_user_contexts($1_t)
192
193 # for eject
194 storage_getattr_fixed_disk($1_t)
195
196 auth_read_login_records($1_t)
197 auth_dontaudit_write_login_records($1_t)
198 auth_run_pam($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
199 auth_run_utempter($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
200
201 corecmd_exec_bin($1_t)
202 corecmd_exec_sbin($1_t)
203 corecmd_exec_ls($1_t)
204
205 domain_exec_all_entry_files($1_t)
206 domain_use_wide_inherit_fd($1_t)
207 # When the user domain runs ps, there will be a number of access
208 # denials when ps tries to search /proc. Do not audit these denials.
209 domain_dontaudit_read_all_domains_state($1_t)
210 domain_dontaudit_getsession_all_domains($1_t)
211
212 files_exec_etc_files($1_t)
213 files_search_locks($1_t)
214 # old broswer_domain():
215 files_dontaudit_list_non_security($1_t)
216 files_dontaudit_getattr_non_security_files($1_t)
217 files_dontaudit_getattr_non_security_symlinks($1_t)
218 files_dontaudit_getattr_non_security_pipes($1_t)
219 files_dontaudit_getattr_non_security_sockets($1_t)
220 files_dontaudit_getattr_non_security_blk_dev($1_t)
221 files_dontaudit_getattr_non_security_chr_dev($1_t)
222
223 # Caused by su - init scripts
224 init_dontaudit_use_script_pty($1_t)
225
226 libs_use_ld_so($1_t)
227 libs_use_shared_libs($1_t)
228 libs_exec_ld_so($1_t)
229 libs_exec_lib_files($1_t)
230
231 logging_dontaudit_getattr_all_logs($1_t)
232
233 miscfiles_read_localization($1_t)
234 miscfiles_read_fonts($1_t)
235 # for running TeX programs
236 miscfiles_read_tetex_data($1_t)
237 miscfiles_exec_tetex_data($1_t)
238
239 seutil_read_file_contexts($1_t)
240 seutil_read_default_contexts($1_t)
241 seutil_run_newrole($1_t,$1_r,{ $1_devpts_t $1_tty_device_t })
242
243 mta_rw_spool($1_t)
244
245 tunable_policy(`allow_execmem',`
246 # Allow loading DSOs that require executable stack.
247 allow $1_t self:process execmem;
248 ')
249
250 tunable_policy(`allow_execmem && allow_execstack',`
251 # Allow making the stack executable via mprotect.
252 allow $1_t self:process execstack;
253 ')
254
255 tunable_policy(`read_default_t',`
256 files_list_default($1_t)
257 files_read_default_files($1_t)
258 files_read_default_symlinks($1_t)
259 files_read_default_sockets($1_t)
260 files_read_default_pipes($1_t)
261 ',`
262 files_dontaudit_list_default($1_t)
263 files_dontaudit_read_default_files($1_t)
264 ')
265
266 tunable_policy(`read_untrusted_content',`
267 allow $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:dir r_dir_perms;
268 allow $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:file r_file_perms;
269 allow $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:lnk_file { getattr read };
270 ',`
271 dontaudit $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:dir r_dir_perms;
272 dontaudit $1_t { $1_untrusted_content_t $1_untrusted_content_tmp_t }:file r_file_perms;
273 ')
274
275 tunable_policy(`use_nfs_home_dirs',`
276 fs_manage_nfs_dirs($1_t)
277 fs_manage_nfs_files($1_t)
278 fs_manage_nfs_symlinks($1_t)
279 fs_manage_nfs_named_sockets($1_t)
280 fs_manage_nfs_named_pipes($1_t)
281 fs_execute_nfs_files($1_t)
282 ',`
283 fs_dontaudit_manage_nfs_dirs($1_t)
284 fs_dontaudit_manage_nfs_files($1_t)
285 ')
286
287 tunable_policy(`use_samba_home_dirs',`
288 fs_manage_cifs_dirs($1_t)
289 fs_manage_cifs_files($1_t)
290 fs_manage_cifs_symlinks($1_t)
291 fs_manage_cifs_named_sockets($1_t)
292 fs_manage_cifs_named_pipes($1_t)
293 fs_execute_cifs_files($1_t)
294 ',`
295 fs_dontaudit_manage_cifs_dirs($1_t)
296 fs_dontaudit_manage_cifs_files($1_t)
297 ')
298
299 tunable_policy(`user_direct_mouse',`
300 dev_read_mouse($1_t)
301 ')
302
303 tunable_policy(`user_ttyfile_stat',`
304 term_getattr_all_user_ttys($1_t)
305 ')
306
307 optional_policy(`dbus.te',`
308 dbus_system_bus_client_template($1,$1_t)
309 ')
310
311 optional_policy(`dictd.te',`
312 dictd_use($1_t)
313 ')
314
315 optional_policy(`ftp.te',`
316 tunable_policy(`ftpd_is_daemon',`
317 ftp_tcp_connect($1_t)
318 ')
319 ')
320
321 optional_policy(`finger.te',`
322 finger_tcp_connect($1_t)
323 ')
324
325 optional_policy(`inetd.te',`
326 inetd_tcp_connect($1_t)
327 ')
328
329 optional_policy(`inn.te',`
330 inn_read_config($1_t)
331 inn_read_news_lib($1_t)
332 inn_read_news_spool($1_t)
333 ')
334
335 optional_policy(`nis.te',`
336 nis_use_ypbind($1_t)
337 ')
338
339 optional_policy(`mysql.te',`
340 ifdef(`targeted_policy',`',`
341 tunable_policy(`allow_user_mysql_connect',`
342 mysql_stream_connect($1_t)
343 ')
344 ')
345 ')
346
347 optional_policy(`nscd.te',`
348 nscd_use_socket($1_t)
349 ')
350
351 optional_policy(`pcmcia.te',`
352 # to allow monitoring of pcmcia status
353 pcmcia_read_pid($1_t)
354 ')
355
356 optional_policy(`quota.te',`
357 quota_dontaudit_getattr_db($1_t)
358 ')
359
360 optional_policy(`rpm.te',`
361 files_getattr_var_lib_dir($1_t)
362 files_search_var_lib($1_t)
363 ')
364
365 optional_policy(`squid.te',`
366 squid_use($1_t)
367 ')
368
369 optional_policy(`usermanage.te',`
370 usermanage_run_chfn($1_t,$1_r,{ $1_devpts_t $1_tty_device_t })
371 usermanage_run_passwd($1_t,$1_r,{ $1_devpts_t $1_tty_device_t })
372 ')
373
374 ifdef(`TODO',`
375
376 can_winbind($1_t)
377
378 #
379 # Cups daemon running as user tries to write /etc/printcap
380 #
381 dontaudit $1_t usr_t:file setattr;
382
383 # Check to see if cdrom is mounted
384 allow $1_t mnt_t:dir { getattr search };
385
386 #
387 # Added to allow reading of cdrom
388 #
389 allow $1_t rpc_pipefs_t:dir getattr;
390 allow $1_t nfsd_fs_t:dir getattr;
391 allow $1_t binfmt_misc_fs_t:dir getattr;
392
393 # /initrd is left mounted, various programs try to look at it
394 dontaudit $1_t ramfs_t:dir getattr;
395
396 #
397 # Running ifconfig as a user generates the following
398 #
399 dontaudit $1_t sysctl_net_t:dir search;
400
401 r_dir_file($1_t, usercanread)
402
403 allow $1_t fs_type:dir getattr;
404
405 # old browser_domain():
406 dontaudit $1 unlabeled_t:dir_file_class_set getattr;
407 dontaudit $1 unlabeled_t:dir search;
408 dontaudit $1 unlabeled_t:dir read;
409 dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir_file_class_set getattr;
410 dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir search;
411 dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir read;
412
413 allow $1_t usbtty_device_t:chr_file read;
414
415 can_resmgrd_connect($1_t)
416
417 # Grant permissions to access the system DBus
418 ifdef(`dbusd.te', `
419 ifdef(`hald.te', `
420 allow $1_t hald_t:dbus send_msg;
421 allow hald_t $1_t:dbus send_msg;
422 ')
423 ')
424
425 # Gnome pannel binds to the following
426 ifdef(`cups.te', `
427 allow $1_t { cupsd_etc_t cupsd_rw_etc_t }:file r_file_perms;
428 ')
429
430 ifdef(`inetd.te', `
431 # Connect to inetd.
432 inetd_tcp_connect($1_t)
433 can_udp_send($1_t, inetd_t)
434 can_udp_send(inetd_t, $1_t)
435 # Inherit and use sockets from inetd
436 inetd_use_fd($1_t)
437 allow $1_t inetd_t:tcp_socket rw_stream_socket_perms;
438 ')
439
440 # Connect to portmap.
441 ifdef(`portmap.te', `can_tcp_connect($1_t, portmap_t)')
442
443 # Use X
444 x_client_domain($1, $1)
445
446 ifdef(`xserver.te', `
447 allow $1_t xserver_misc_device_t:{ chr_file blk_file } rw_file_perms;
448 ')
449
450 ifdef(`xdm.te', `
451 # Connect to the X server run by the X Display Manager.
452 can_unix_connect($1_t, xdm_t)
453 # certain apps want to read xdm.pid file
454 r_dir_file($1_t, xdm_var_run_t)
455 allow $1_t xdm_var_lib_t:file r_file_perms;
456 allow xdm_t $1_home_dir_t:dir getattr;
457 ifdef(`xauth.te', `
458 file_type_auto_trans(xdm_t, $1_home_dir_t, $1_xauth_home_t, file)
459 ')
460 ')
461
462 # start read_fonts()
463
464 # cjp: this macro is unconditional, though
465 # its in a conditional file.
466
467 # Manipulate the global font cache
468 create_dir_file($1, $1_fonts_cache_t)
469
470 # Read per user fonts and font config
471 r_dir_file($1, $1_fonts_t)
472 r_dir_file($1, $1_fonts_config_t)
473
474 # There are some fonts in .gnome2
475 ifdef(`gnome.te', `
476 allow $1 $2_gnome_settings_t:dir { getattr search };
477 ')
478 # end read_fonts()
479
480 ifdef(`rpcd.te', `
481 create_dir_file($1_t, nfsd_rw_t)
482 ')
483
484 #
485 # Allow graphical boot to check battery lifespan
486 #
487 ifdef(`apmd.te', `
488 allow $1_t apmd_t:unix_stream_socket connectto;
489 allow $1_t apmd_var_run_t:sock_file write;
490 ')
491
492 ifdef(`pamconsole.te', `
493 allow $1_t pam_var_console_t:dir search;
494 ')
495
496 ') dnl endif TODO
497
498 ')
499
500 #######################################
501 ## <summary>
502 ## The template for creating a unprivileged user.
503 ## </summary>
504 ## <desc>
505 ## <p>
506 ## This template creates a user domain, types, and
507 ## rules for the user's tty, pty, home directories,
508 ## tmp, and tmpfs files.
509 ## </p>
510 ## </desc>
511 ## <param name="userdomain_prefix">
512 ## The prefix of the user domain (e.g., user
513 ## is the prefix for user_t).
514 ## </param>
515 #
516 template(`unpriv_user_template', `
517 ##############################
518 #
519 # Declarations
520 #
521
522 # Inherit rules for ordinary users.
523 base_user_template($1)
524
525 typeattribute $1_t unpriv_userdomain;
526 domain_wide_inherit_fd($1_t)
527
528 typeattribute $1_devpts_t user_ptynode;
529
530 typeattribute $1_home_dir_t user_home_dir_type;
531 files_poly($1_home_dir_t)
532
533 typeattribute $1_home_t user_home_type;
534 files_poly_member($1_home_t)
535
536 typeattribute $1_tmp_t user_tmpfile;
537 typeattribute $1_tty_device_t user_ttynode;
538
539 ##############################
540 #
541 # Local policy
542 #
543
544 allow $1_t $1_devpts_t:chr_file { setattr ioctl read getattr lock write append };
545 term_create_pty($1_t,$1_devpts_t)
546
547 # Rules used to associate a homedir as a mountpoint
548 allow $1_home_t self:filesystem associate;
549 allow $1_file_type $1_home_t:filesystem associate;
550
551 # privileged home directory writers
552 allow privhome $1_home_t:file create_file_perms;
553 allow privhome $1_home_t:lnk_file create_lnk_perms;
554 allow privhome $1_home_t:dir create_dir_perms;
555 allow privhome $1_home_t:sock_file create_file_perms;
556 allow privhome $1_home_t:fifo_file create_file_perms;
557 type_transition privhome $1_home_dir_t:{ dir notdevfile_class_set } $1_home_t;
558
559 kernel_read_system_state($1_t)
560 kernel_read_network_state($1_t)
561 dev_read_sysfs($1_t)
562
563 # cjp: why?
564 bootloader_read_kernel_symbol_table($1_t)
565
566 # port access is audited even if dac would not have allowed it, so dontaudit it here
567 corenet_dontaudit_tcp_bind_all_reserved_ports($1_t)
568
569 files_read_etc_files($1_t)
570 files_list_home($1_t)
571 files_read_usr_files($1_t)
572 files_exec_usr_files($1_t)
573 # Read directories and files with the readable_t type.
574 # This type is a general type for "world"-readable files.
575 files_list_world_readable($1_t)
576 files_read_world_readable_files($1_t)
577 files_read_world_readable_symlinks($1_t)
578 files_read_world_readable_pipes($1_t)
579 files_read_world_readable_sockets($1_t)
580
581 init_read_script_pid($1_t)
582 # The library functions always try to open read-write first,
583 # then fall back to read-only if it fails.
584 init_dontaudit_write_script_pid($1_t)
585 # Stop warnings about access to /dev/console
586 init_dontaudit_use_fd($1_t)
587 init_dontaudit_use_script_fd($1_t)
588
589 miscfiles_read_man_pages($1_t)
590
591 seutil_read_config($1_t)
592 # Allow users to execute checkpolicy without a domain transition
593 # so it can be used without privilege to write real binary policy file
594 seutil_exec_checkpol($1_t)
595
596 ifdef(`enable_polyinstantiation',`
597 type_member $1_t $1_home_dir_t:dir $1_home_t;
598 files_poly_member_tmp($1_t)
599 ')
600
601 tunable_policy(`user_dmesg',`
602 kernel_read_ring_buffer($1_t)
603 ',`
604 kernel_dontaudit_read_ring_buffer($1_t)
605 ')
606
607 # Allow users to run TCP servers (bind to ports and accept connection from
608 # the same domain and outside users) disabling this forces FTP passive mode
609 # and may change other protocols
610 tunable_policy(`user_tcp_server',`
611 corenet_tcp_bind_generic_port($1_t)
612 ')
613
614 optional_policy(`kerberos.te',`
615 kerberos_use($1_t)
616 ')
617
618 optional_policy(`loadkeys.te',`
619 loadkeys_run($1_t,$1_r,$1_tty_device_t)
620 ')
621
622 # for running depmod as part of the kernel packaging process
623 optional_policy(`modutils.te',`
624 modutils_read_module_conf($1_t)
625 ')
626
627 optional_policy(`netutils.te',`
628 netutils_run_ping_cond($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
629 netutils_run_traceroute_cond($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
630 ')
631
632 optional_policy(`selinuxutil.te',`
633 # for when the network connection is killed
634 seutil_dontaudit_signal_newrole($1_t)
635 ')
636
637 # Need the following rule to allow users to run vpnc
638 optional_policy(`xserver.te', `
639 corenetwork_bind_tcp_on_xserver_port($1_t)
640 ')
641
642 ifdef(`TODO',`
643
644 ifdef(`enable_mls',`',`
645 fs_exec_noxattr($1_t)
646 tunable_policy(`user_rw_noexattrfile',`
647 create_dir_file($1_t, noexattrfile)
648 # Write floppies
649 storage_raw_read_removable_device($1_t)
650 storage_raw_write_removable_device($1_t)
651 # cjp: what does this have to do with removable devices?
652 allow $1_t usbtty_device_t:chr_file write;
653 ',`
654 r_dir_file($1_t, noexattrfile)
655 r_dir_file($1_t, removable_t)
656 allow $1_t removable_device_t:blk_file r_file_perms;
657 ')
658 ')
659
660 dontaudit $1_t boot_t:lnk_file read;
661 dontaudit $1_t boot_t:file read;
662
663 # do not audit read on disk devices
664 dontaudit $1_t { removable_device_t fixed_disk_device_t }:blk_file read;
665
666 ifdef(`xdm.te', `
667 allow xdm_t $1_home_t:lnk_file read;
668 allow xdm_t $1_home_t:dir search;
669 #
670 # Changing this to dontaudit should cause the .xsession-errors file to be written to /tmp
671 #
672 dontaudit xdm_t $1_home_t:file rw_file_perms;
673 ')
674
675 ifdef(`ftpd.te', `
676 tunable_policy(`ftp_home_dir',`
677 file_type_auto_trans(ftpd_t, $1_home_dir_t, $1_home_t)
678 ')
679 ')
680
681 ifdef(`useradd.te', `
682 # Useradd relabels /etc/skel files so needs these privs
683 allow useradd_t $1_file_type:dir create_dir_perms;
684 allow useradd_t $1_file_type:notdevfile_class_set create_file_perms;
685 ')
686
687 # Stat lost+found.
688 allow $1_t lost_found_t:dir getattr;
689
690 # Read /var, /var/spool, /var/run.
691 r_dir_file($1_t, var_t)
692 # what about pipes and sockets under /var/spool?
693 r_dir_file($1_t, var_spool_t)
694 r_dir_file($1_t, var_run_t)
695 allow $1_t var_lib_t:dir r_dir_perms;
696 allow $1_t var_lib_t:file { getattr read };
697
698 # Allow users to rw usb devices
699 tunable_policy(`user_rw_usb',`
700 rw_dir_create_file($1_t,usbdevfs_t)
701 ',`
702 r_dir_file($1_t,usbdevfs_t)
703 ')
704
705 # Do not audit write denials to /etc/ld.so.cache.
706 dontaudit $1_t ld_so_cache_t:file write;
707
708 dontaudit $1_t sysadm_home_t:file { read append };
709
710 ifdef(`syslogd.te', `
711 # Some programs that are left in $1_t will try to connect
712 # to syslogd, but we do not want to let them generate log messages.
713 # Do not audit.
714 dontaudit $1_t devlog_t:sock_file { read write };
715 dontaudit $1_t syslogd_t:unix_dgram_socket sendto;
716 ')
717
718 allow $1_t initrc_t:fifo_file write;
719
720 ') dnl end TODO
721 ')
722
723 #######################################
724 ## <summary>
725 ## The template for creating an administrative user.
726 ## </summary>
727 ## <desc>
728 ## <p>
729 ## This template creates a user domain, types, and
730 ## rules for the user's tty, pty, home directories,
731 ## tmp, and tmpfs files.
732 ## </p>
733 ## <p>
734 ## The privileges given to administrative users are:
735 ## <ul>
736 ## <li>Raw disk access</li>
737 ## <li>Set all sysctls</li>
738 ## <li>All kernel ring buffer controls</li>
739 ## <li>Set SELinux enforcement mode (enforcing/permissive)</li>
740 ## <li>Set SELinux booleans</li>
741 ## <li>Relabel all files but shadow</li>
742 ## <li>Create, read, write, and delete all files but shadow</li>
743 ## <li>Manage source and binary format SELinux policy</li>
744 ## <li>Run insmod</li>
745 ## </ul>
746 ## </p>
747 ## </desc>
748 ## <param name="userdomain_prefix">
749 ## The prefix of the user domain (e.g., sysadm
750 ## is the prefix for sysadm_t).
751 ## </param>
752 #
753 template(`admin_user_template',`
754 gen_require(`
755 class passwd { passwd chfn chsh rootok crontab };
756 ')
757
758 ##############################
759 #
760 # Declarations
761 #
762
763 # Inherit rules for ordinary users.
764 base_user_template($1)
765
766 typeattribute $1_t privhome;
767 domain_obj_id_change_exempt($1_t)
768 role system_r types $1_t;
769
770 ifdef(`direct_sysadm_daemon',`
771 domain_system_change_exempt($1_t)
772 ')
773
774 typeattribute $1_devpts_t admin_terminal;
775
776 typeattribute $1_tty_device_t admin_terminal;
777
778 ##############################
779 #
780 # $1_t local policy
781 #
782
783 allow $1_t self:capability ~sys_module;
784 allow $1_t self:process { setexec setfscreate };
785
786 # Set password information for other users.
787 allow $1_t self:passwd { passwd chfn chsh };
788
789 # Skip authentication when pam_rootok is specified.
790 allow $1_t self:passwd rootok;
791
792 # Manipulate other users crontab.
793 allow $1_t self:passwd crontab;
794
795 # for the administrator to run TCP servers directly
796 allow $1_t self:tcp_socket { acceptfrom connectto recvfrom };
797
798 allow $1_t self:netlink_audit_socket nlmsg_readpriv;
799
800 allow $1_t $1_devpts_t:chr_file { setattr ioctl read getattr lock write append };
801 term_create_pty($1_t,$1_devpts_t)
802
803 kernel_read_system_state($1_t)
804 kernel_read_network_state($1_t)
805 kernel_read_software_raid_state($1_t)
806 kernel_getattr_core($1_t)
807 kernel_getattr_message_if($1_t)
808 kernel_change_ring_buffer_level($1_t)
809 kernel_clear_ring_buffer($1_t)
810 kernel_read_ring_buffer($1_t)
811 kernel_get_sysvipc_info($1_t)
812 kernel_rw_all_sysctl($1_t)
813 # signal unlabeled processes:
814 kernel_kill_unlabeled($1_t)
815 kernel_signal_unlabeled($1_t)
816 kernel_sigstop_unlabeled($1_t)
817 kernel_signull_unlabeled($1_t)
818 kernel_sigchld_unlabeled($1_t)
819 # for the administrator to run TCP servers directly
820 kernel_tcp_recvfrom($1_t)
821
822 corenet_tcp_bind_generic_port($1_t)
823 # allow setting up tunnels
824 corenet_use_tun_tap_device($1_t)
825
826 dev_getattr_generic_blk_file($1_t)
827 dev_getattr_generic_chr_file($1_t)
828 dev_getattr_all_blk_files($1_t)
829 dev_getattr_all_chr_files($1_t)
830
831 fs_getattr_all_fs($1_t)
832 fs_set_all_quotas($1_t)
833 fs_exec_noxattr($1_t)
834
835 selinux_set_enforce_mode($1_t)
836 selinux_set_boolean($1_t)
837 selinux_set_parameters($1_t)
838 # Get security policy decisions:
839 selinux_get_fs_mount($1_t)
840 selinux_validate_context($1_t)
841 selinux_compute_access_vector($1_t)
842 selinux_compute_create_context($1_t)
843 selinux_compute_relabel_context($1_t)
844 selinux_compute_user_contexts($1_t)
845
846 storage_raw_read_removable_device($1_t)
847 storage_raw_write_removable_device($1_t)
848
849 term_use_console($1_t)
850 term_use_unallocated_tty($1_t)
851 term_use_all_user_ptys($1_t)
852 term_use_all_user_ttys($1_t)
853
854 auth_getattr_shadow($1_t)
855 # Manage almost all files
856 auth_manage_all_files_except_shadow($1_t)
857 # Relabel almost all files
858 auth_relabel_all_files_except_shadow($1_t)
859
860 domain_setpriority_all_domains($1_t)
861 domain_read_all_domains_state($1_t)
862 domain_getattr_all_domains($1_t)
863 domain_dontaudit_ptrace_all_domains($1_t)
864 # signal all domains:
865 domain_kill_all_domains($1_t)
866 domain_signal_all_domains($1_t)
867 domain_signull_all_domains($1_t)
868 domain_sigstop_all_domains($1_t)
869 domain_sigstop_all_domains($1_t)
870 domain_sigchld_all_domains($1_t)
871 # for lsof
872 domain_getattr_all_sockets($1_t)
873
874 files_exec_usr_src_files($1_t)
875
876 init_use_initctl($1_t)
877
878 logging_send_syslog_msg($1_t)
879
880 modutils_domtrans_insmod($1_t)
881
882 seutil_read_config($1_t)
883 # The following rule is temporary until such time that a complete
884 # policy management infrastructure is in place so that an administrator
885 # cannot directly manipulate policy files with arbitrary programs.
886 seutil_manage_src_pol($1_t)
887 # Violates the goal of limiting write access to checkpolicy.
888 # But presently necessary for installing the file_contexts file.
889 seutil_manage_binary_pol($1_t)
890
891 optional_policy(`cron.te',`
892 cron_admin_template($1)
893 ')
894
895 ifdef(`TODO',`
896
897 # for lsof
898 allow $1_t mtrr_device_t:file getattr;
899 allow $1_t eventpollfs_t:file getattr;
900
901 allow $1_t serial_device:chr_file setattr;
902
903 allow $1_t ptyfile:chr_file getattr;
904
905 # Run admin programs that require different permissions in their own domain.
906 # These rules were moved into the appropriate program domain file.
907
908 ifdef(`xserver.te', `
909 # Create files in /tmp/.X11-unix with our X servers derived
910 # tmp type rather than user_xserver_tmp_t.
911 file_type_auto_trans($1_xserver_t, xserver_tmpfile, $1_xserver_tmp_t, sock_file)
912 ')
913
914
915 ifdef(`xdm.te', `
916 tunable_policy(`xdm_sysadm_login',`
917 allow xdm_t $1_home_t:lnk_file read;
918 allow xdm_t $1_home_t:dir search;
919 ')
920 can_pipe_xdm($1_t)
921 ')
922
923 # Connect data port to ftpd.
924 ifdef(`ftpd.te', `can_tcp_connect(ftpd_t, $1_t)')
925
926 # Connect second port to rshd.
927 ifdef(`rshd.te', `can_tcp_connect(rshd_t, $1_t)')
928
929 # Allow MAKEDEV to work
930 allow $1_t device_t:dir rw_dir_perms;
931 allow $1_t device_type:{ blk_file chr_file } { create unlink rename };
932 allow $1_t device_t:lnk_file { create read };
933
934 #
935 # A user who is authorized for sysadm_t may nonetheless have
936 # a home directory labeled with user_home_t if the user is expected
937 # to login in either user_t or sysadm_t. Hence, the derived domains
938 # for programs need to be able to access user_home_t.
939 #
940
941 # Allow our gph domain to write to .xsession-errors.
942 ifdef(`gnome-pty-helper.te', `
943 allow $1_gph_t user_home_dir_type:dir rw_dir_perms;
944 allow $1_gph_t user_home_type:file create_file_perms;
945 ')
946
947 # Run programs from staff home directories.
948 # Not ideal, but typical if users want to login as both sysadm_t or staff_t.
949 can_exec($1_t, staff_home_t)
950
951 tunable_policy(`user_rw_noexattrfile',`
952 create_dir_file($1_t, noexattrfile)
953 # Write floppies
954 storage_raw_read_removable_device($1_t)
955 storage_raw_write_removable_device($1_t)
956 # cjp: what does this have to do with removable devices?
957 allow $1_t usbtty_device_t:chr_file write;
958 ',`
959 r_dir_file($1_t, noexattrfile)
960 r_dir_file($1_t, removable_t)
961 allow $1_t removable_device_t:blk_file r_file_perms;
962 ')
963 allow $1 removable_t:filesystem getattr;
964
965 ') dnl endif TODO
966 ')
967
968 ########################################
969 ## <summary>
970 ## Search user home directories.
971 ## </summary>
972 ## <desc>
973 ## <p>
974 ## Search user home directories.
975 ## </p>
976 ## <p>
977 ## This is a templated interface, and should only
978 ## be called from a per-userdomain template.
979 ## </p>
980 ## </desc>
981 ## <param name="userdomain_prefix">
982 ## The prefix of the user domain (e.g., user
983 ## is the prefix for user_t).
984 ## </param>
985 ## <param name="domain">
986 ## The type of the process performing this action.
987 ## </param>
988 #
989 template(`userdom_search_user_home',`
990 gen_require(`
991 class dir { getattr search };
992 ')
993
994 files_search_home($2)
995 allow $2 $1_home_dir_t:dir { getattr search };
996 ')
997
998 ########################################
999 ## <summary>
1000 ## Read user home files.
1001 ## </summary>
1002 ## <desc>
1003 ## <p>
1004 ## Read user home files.
1005 ## </p>
1006 ## <p>
1007 ## This is a templated interface, and should only
1008 ## be called from a per-userdomain template.
1009 ## </p>
1010 ## </desc>
1011 ## <param name="userdomain_prefix">
1012 ## The prefix of the user domain (e.g., user
1013 ## is the prefix for user_t).
1014 ## </param>
1015 ## <param name="domain">
1016 ## The type of the process performing this action.
1017 ## </param>
1018 #
1019 template(`userdom_read_user_home_files',`
1020 gen_require(`
1021 class dir search;
1022 class file r_file_perms;
1023 ')
1024
1025 files_search_home($2)
1026 allow $2 $1_home_dir_t:dir search;
1027 allow $2 $1_home_t:dir search;
1028 allow $2 $1_home_t:file r_file_perms;
1029 ')
1030
1031 ########################################
1032 ## <summary>
1033 ## Execute user home files.
1034 ## </summary>
1035 ## <desc>
1036 ## <p>
1037 ## Execute user home files.
1038 ## </p>
1039 ## <p>
1040 ## This is a templated interface, and should only
1041 ## be called from a per-userdomain template.
1042 ## </p>
1043 ## </desc>
1044 ## <param name="userdomain_prefix">
1045 ## The prefix of the user domain (e.g., user
1046 ## is the prefix for user_t).
1047 ## </param>
1048 ## <param name="domain">
1049 ## The type of the process performing this action.
1050 ## </param>
1051 #
1052 template(`userdom_exec_user_home_files',`
1053 gen_require(`
1054 class dir search;
1055 ')
1056
1057 files_search_home($2)
1058 allow $2 $1_home_dir_t:dir search;
1059 allow $2 $1_home_t:dir search;
1060 can_exec($2,$1_home_t)
1061 ')
1062
1063 ########################################
1064 ## <summary>
1065 ## Create, read, write, and delete files
1066 ## in a user home subdirectory.
1067 ## </summary>
1068 ## <desc>
1069 ## <p>
1070 ## Create, read, write, and delete files
1071 ## in a user home subdirectory.
1072 ## </p>
1073 ## <p>
1074 ## This is a templated interface, and should only
1075 ## be called from a per-userdomain template.
1076 ## </p>
1077 ## </desc>
1078 ## <param name="userdomain_prefix">
1079 ## The prefix of the user domain (e.g., user
1080 ## is the prefix for user_t).
1081 ## </param>
1082 ## <param name="domain">
1083 ## The type of the process performing this action.
1084 ## </param>
1085 #
1086 template(`userdom_manage_user_home_subdir_files',`
1087 gen_require(`
1088 class dir rw_dir_perms;
1089 class file create_file_perms;
1090 ')
1091
1092 files_search_home($2)
1093 allow $2 $1_home_dir_t:dir search;
1094 allow $2 $1_home_t:dir rw_dir_perms;
1095 allow $2 $1_home_t:file create_file_perms;
1096 ')
1097
1098 ########################################
1099 ## <summary>
1100 ## Create, read, write, and delete symbolic links
1101 ## in a user home subdirectory.
1102 ## </summary>
1103 ## <desc>
1104 ## <p>
1105 ## Create, read, write, and delete symbolic links
1106 ## in a user home subdirectory.
1107 ## </p>
1108 ## <p>
1109 ## This is a templated interface, and should only
1110 ## be called from a per-userdomain template.
1111 ## </p>
1112 ## </desc>
1113 ## <param name="userdomain_prefix">
1114 ## The prefix of the user domain (e.g., user
1115 ## is the prefix for user_t).
1116 ## </param>
1117 ## <param name="domain">
1118 ## The type of the process performing this action.
1119 ## </param>
1120 #
1121 template(`userdom_manage_user_home_subdir_symlinks',`
1122 gen_require(`
1123 class dir rw_dir_perms;
1124 class lnk_file create_lnk_perms;
1125 ')
1126
1127 files_search_home($2)
1128 allow $2 $1_home_dir_t:dir search;
1129 allow $2 $1_home_t:dir rw_dir_perms;
1130 allow $2 $1_home_t:lnk_file create_lnk_perms;
1131 ')
1132
1133 ########################################
1134 ## <summary>
1135 ## Create, read, write, and delete named pipes
1136 ## in a user home subdirectory.
1137 ## </summary>
1138 ## <desc>
1139 ## <p>
1140 ## Create, read, write, and delete named pipes
1141 ## in a user home subdirectory.
1142 ## </p>
1143 ## <p>
1144 ## This is a templated interface, and should only
1145 ## be called from a per-userdomain template.
1146 ## </p>
1147 ## </desc>
1148 ## <param name="userdomain_prefix">
1149 ## The prefix of the user domain (e.g., user
1150 ## is the prefix for user_t).
1151 ## </param>
1152 ## <param name="domain">
1153 ## The type of the process performing this action.
1154 ## </param>
1155 #
1156 template(`userdom_manage_user_home_subdir_pipes',`
1157 gen_require(`
1158 class dir rw_dir_perms;
1159 class fifo_file create_file_perms;
1160 ')
1161
1162 files_search_home($2)
1163 allow $2 $1_home_dir_t:dir search;
1164 allow $2 $1_home_t:dir rw_dir_perms;
1165 allow $2 $1_home_t:fifo_file create_file_perms;
1166 ')
1167
1168 ########################################
1169 ## <summary>
1170 ## Create, read, write, and delete named sockets
1171 ## in a user home subdirectory.
1172 ## </summary>
1173 ## <desc>
1174 ## <p>
1175 ## Create, read, write, and delete named sockets
1176 ## in a user home subdirectory.
1177 ## </p>
1178 ## <p>
1179 ## This is a templated interface, and should only
1180 ## be called from a per-userdomain template.
1181 ## </p>
1182 ## </desc>
1183 ## <param name="userdomain_prefix">
1184 ## The prefix of the user domain (e.g., user
1185 ## is the prefix for user_t).
1186 ## </param>
1187 ## <param name="domain">
1188 ## The type of the process performing this action.
1189 ## </param>
1190 #
1191 template(`userdom_manage_user_home_subdir_sockets',`
1192 gen_require(`
1193 class dir rw_dir_perms;
1194 class sock_file create_file_perms;
1195 ')
1196
1197 files_search_home($2)
1198 allow $2 $1_home_dir_t:dir search;
1199 allow $2 $1_home_t:dir rw_dir_perms;
1200 allow $2 $1_home_t:sock_file create_file_perms;
1201 ')
1202
1203 ########################################
1204 ## <summary>
1205 ##
1206 ## </summary>
1207 ## <desc>
1208 ## <p>
1209 ## Create, read, write, and delete named sockets
1210 ## in a user home subdirectory.
1211 ## </p>
1212 ## <p>
1213 ## This is a templated interface, and should only
1214 ## be called from a per-userdomain template.
1215 ## </p>
1216 ## </desc>
1217 ## <param name="userdomain_prefix">
1218 ## The prefix of the user domain (e.g., user
1219 ## is the prefix for user_t).
1220 ## </param>
1221 ## <param name="domain">
1222 ## The type of the process performing this action.
1223 ## </param>
1224 ## <param name="object_class" optional="true">
1225 ## The class of the object to be created. If not
1226 ## specified, file is used.
1227 ## </param>
1228 #
1229 template(`userdom_create_user_home',`
1230 gen_require(`
1231 class dir rw_dir_perms;
1232 ')
1233
1234 files_search_home($2)
1235
1236 allow $2 $1_home_dir_t:dir rw_dir_perms;
1237
1238 ifelse(`$3',`',`
1239 type_transition $2 $1_home_dir_t:file $1_home_t;
1240 ',`
1241 type_transition $2 $1_home_dir_t:$3 $1_home_t;
1242 ')
1243 ')
1244
1245 ########################################
1246 ## <summary>
1247 ## Create, read, write, and delete user
1248 ## temporary directories.
1249 ## </summary>
1250 ## <desc>
1251 ## <p>
1252 ## Create, read, write, and delete user
1253 ## temporary directories.
1254 ## </p>
1255 ## <p>
1256 ## This is a templated interface, and should only
1257 ## be called from a per-userdomain template.
1258 ## </p>
1259 ## </desc>
1260 ## <param name="userdomain_prefix">
1261 ## The prefix of the user domain (e.g., user
1262 ## is the prefix for user_t).
1263 ## </param>
1264 ## <param name="domain">
1265 ## The type of the process performing this action.
1266 ## </param>
1267 #
1268 template(`userdom_manage_user_tmp_dirs',`
1269 gen_require(`
1270 class dir create_dir_perms;
1271 ')
1272
1273 files_search_tmp($2)
1274 allow $2 $1_tmp_t:dir create_dir_perms;
1275 ')
1276
1277 ########################################
1278 ## <summary>
1279 ## Create, read, write, and delete user
1280 ## temporary files.
1281 ## </summary>
1282 ## <desc>
1283 ## <p>
1284 ## Create, read, write, and delete user
1285 ## temporary files.
1286 ## </p>
1287 ## <p>
1288 ## This is a templated interface, and should only
1289 ## be called from a per-userdomain template.
1290 ## </p>
1291 ## </desc>
1292 ## <param name="userdomain_prefix">
1293 ## The prefix of the user domain (e.g., user
1294 ## is the prefix for user_t).
1295 ## </param>
1296 ## <param name="domain">
1297 ## The type of the process performing this action.
1298 ## </param>
1299 #
1300 template(`userdom_manage_user_tmp_files',`
1301 gen_require(`
1302 class dir rw_dir_perms;
1303 class file create_file_perms;
1304 ')
1305
1306 files_search_tmp($2)
1307 allow $2 $1_tmp_t:dir rw_dir_perms;
1308 allow $2 $1_tmp_t:file create_file_perms;
1309 ')
1310
1311 ########################################
1312 ## <summary>
1313 ## Create, read, write, and delete user
1314 ## temporary symbolic links.
1315 ## </summary>
1316 ## <desc>
1317 ## <p>
1318 ## Create, read, write, and delete user
1319 ## temporary symbolic links.
1320 ## </p>
1321 ## <p>
1322 ## This is a templated interface, and should only
1323 ## be called from a per-userdomain template.
1324 ## </p>
1325 ## </desc>
1326 ## <param name="userdomain_prefix">
1327 ## The prefix of the user domain (e.g., user
1328 ## is the prefix for user_t).
1329 ## </param>
1330 ## <param name="domain">
1331 ## The type of the process performing this action.
1332 ## </param>
1333 #
1334 template(`userdom_manage_user_tmp_symlinks',`
1335 gen_require(`
1336 class dir rw_dir_perms;
1337 class lnk_file create_lnk_perms;
1338 ')
1339
1340 files_search_tmp($2)
1341 allow $2 $1_tmp_t:dir rw_dir_perms;
1342 allow $2 $1_tmp_t:lnk_file create_lnk_perms;
1343 ')
1344
1345 ########################################
1346 ## <summary>
1347 ## Create, read, write, and delete user
1348 ## temporary named pipes.
1349 ## </summary>
1350 ## <desc>
1351 ## <p>
1352 ## Create, read, write, and delete user
1353 ## temporary named pipes.
1354 ## </p>
1355 ## <p>
1356 ## This is a templated interface, and should only
1357 ## be called from a per-userdomain template.
1358 ## </p>
1359 ## </desc>
1360 ## <param name="userdomain_prefix">
1361 ## The prefix of the user domain (e.g., user
1362 ## is the prefix for user_t).
1363 ## </param>
1364 ## <param name="domain">
1365 ## The type of the process performing this action.
1366 ## </param>
1367 #
1368 template(`userdom_manage_user_tmp_pipes',`
1369 gen_require(`
1370 class dir rw_dir_perms;
1371 class fifo_file create_file_perms;
1372 ')
1373
1374 files_search_tmp($2)
1375 allow $2 $1_tmp_t:dir rw_dir_perms;
1376 allow $2 $1_tmp_t:fifo_file create_file_perms;
1377 ')
1378
1379 ########################################
1380 ## <summary>
1381 ## Create, read, write, and delete user
1382 ## temporary named sockets.
1383 ## </summary>
1384 ## <desc>
1385 ## <p>
1386 ## Create, read, write, and delete user
1387 ## temporary named sockets.
1388 ## </p>
1389 ## <p>
1390 ## This is a templated interface, and should only
1391 ## be called from a per-userdomain template.
1392 ## </p>
1393 ## </desc>
1394 ## <param name="userdomain_prefix">
1395 ## The prefix of the user domain (e.g., user
1396 ## is the prefix for user_t).
1397 ## </param>
1398 ## <param name="domain">
1399 ## The type of the process performing this action.
1400 ## </param>
1401 #
1402 template(`userdom_manage_user_tmp_sockets',`
1403 gen_require(`
1404 class dir rw_dir_perms;
1405 class sock_file create_file_perms;
1406 ')
1407
1408 files_search_tmp($2)
1409 allow $2 $1_tmp_t:dir rw_dir_perms;
1410 allow $2 $1_tmp_t:sock_file create_file_perms;
1411 ')
1412
1413 ########################################
1414 ## <summary>
1415 ## Read and write a user domain tty and pty.
1416 ## </summary>
1417 ## <desc>
1418 ## <p>
1419 ## Read and write a user domain tty and pty.
1420 ## </p>
1421 ## <p>
1422 ## This is a templated interface, and should only
1423 ## be called from a per-userdomain template.
1424 ## </p>
1425 ## </desc>
1426 ## <param name="userdomain_prefix">
1427 ## The prefix of the user domain (e.g., user
1428 ## is the prefix for user_t).
1429 ## </param>
1430 ## <param name="domain">
1431 ## The type of the process performing this action.
1432 ## </param>
1433 #
1434 template(`userdom_use_user_terminals',`
1435 gen_require(`
1436 class chr_file rw_term_perms;
1437 ')
1438
1439 allow $2 $1_tty_device_t:chr_file rw_term_perms;
1440 allow $2 $1_devpts_t:chr_file rw_term_perms;
1441 term_list_ptys($2)
1442 ')
1443
1444 ########################################
1445 ## <summary>
1446 ## Execute a shell in all user domains. This
1447 ## is an explicit transition, requiring the
1448 ## caller to use setexeccon().
1449 ## </summary>
1450 ## <param name="domain">
1451 ## The type of the process performing this action.
1452 ## </param>
1453 #
1454 interface(`userdom_spec_domtrans_all_users',`
1455 gen_require(`
1456 attribute userdomain;
1457 ')
1458
1459 corecmd_shell_spec_domtrans($1,userdomain)
1460 ')
1461
1462 ########################################
1463 ## <summary>
1464 ## Execute a shell in all unprivileged user domains. This
1465 ## is an explicit transition, requiring the
1466 ## caller to use setexeccon().
1467 ## </summary>
1468 ## <param name="domain">
1469 ## The type of the process performing this action.
1470 ## </param>
1471 #
1472 interface(`userdom_spec_domtrans_unpriv_users',`
1473 gen_require(`
1474 attribute unpriv_userdomain;
1475 ')
1476
1477 corecmd_shell_spec_domtrans($1,unpriv_userdomain)
1478 ')
1479
1480 ########################################
1481 ## <summary>
1482 ## Execute a shell in the sysadm domain.
1483 ## </summary>
1484 ## <param name="domain">
1485 ## The type of the process performing this action.
1486 ## </param>
1487 #
1488 interface(`userdom_shell_domtrans_sysadm',`
1489 ifdef(`targeted_policy',`
1490 #cjp: need to doublecheck this one
1491 unconfined_shell_domtrans($1)
1492 ',`
1493 gen_require(`
1494 type sysadm_t;
1495 class fd use;
1496 class fifo_file rw_file_perms;
1497 class process sigchld;
1498 ')
1499
1500 corecmd_shell_domtrans($1,sysadm_t)
1501
1502 allow $1 sysadm_t:fd use;
1503 allow sysadm_t $1:fd use;
1504 allow sysadm_t $1:fifo_file rw_file_perms;
1505 allow sysadm_t $1:process sigchld;
1506 ')
1507 ')
1508
1509 ########################################
1510 ## <summary>
1511 ## Search the staff users home directory.
1512 ## </summary>
1513 ## <param name="domain">
1514 ## Domain to not audit.
1515 ## </param>
1516 #
1517 interface(`userdom_search_staff_home_dir',`
1518 gen_require(`
1519 type staff_home_dir_t;
1520 class dir search;
1521 ')
1522
1523 files_search_home($1)
1524 allow $1 staff_home_dir_t:dir search;
1525 ')
1526
1527 ########################################
1528 ## <summary>
1529 ## Do not audit attempts to search the staff
1530 ## users home directory.
1531 ## </summary>
1532 ## <param name="domain">
1533 ## Domain to not audit.
1534 ## </param>
1535 #
1536 interface(`userdom_dontaudit_search_staff_home_dir',`
1537 gen_require(`
1538 type staff_home_dir_t;
1539 class dir search;
1540 ')
1541
1542 dontaudit $1 staff_home_dir_t:dir search;
1543 ')
1544
1545 ########################################
1546 ## <summary>
1547 ## Read files in the staff users home directory.
1548 ## </summary>
1549 ## <param name="domain">
1550 ## The type of the process performing this action.
1551 ## </param>
1552 #
1553 interface(`userdom_read_staff_home_files',`
1554 gen_require(`
1555 type staff_home_dir_t, staff_home_t;
1556 class dir r_dir_perms;
1557 class file r_file_perms;
1558 class lnk_file r_file_perms;
1559 ')
1560
1561 files_search_home($1)
1562 allow $1 { staff_home_dir_t staff_home_t }:dir r_dir_perms;
1563 allow $1 staff_home_t:{ file lnk_file } r_file_perms;
1564 ')
1565
1566 ########################################
1567 ## <summary>
1568 ## Send a SIGCHLD signal to sysadm users.
1569 ## </summary>
1570 ## <param name="domain">
1571 ## The type of the process performing this action.
1572 ## </param>
1573 #
1574 interface(`userdom_sigchld_sysadm',`
1575 gen_require(`
1576 type sysadm_t;
1577 ')
1578
1579 allow $1 sysadm_t:process sigchld;
1580 ')
1581
1582 ########################################
1583 ## <summary>
1584 ## Read and write sysadm ttys.
1585 ## </summary>
1586 ## <param name="domain">
1587 ## The type of the process performing this action.
1588 ## </param>
1589 #
1590 interface(`userdom_use_sysadm_tty',`
1591 ifdef(`targeted_policy',`
1592 term_use_unallocated_tty($1)
1593 ',`
1594 gen_require(`
1595 type sysadm_tty_device_t;
1596 class chr_file rw_term_perms;
1597 ')
1598
1599 dev_list_all_dev_nodes($1)
1600 term_list_ptys($1)
1601 allow $1 sysadm_tty_device_t:chr_file rw_term_perms;
1602 ')
1603 ')
1604
1605 ########################################
1606 ## <summary>
1607 ## Do not audit attempts to use sysadm ttys.
1608 ## </summary>
1609 ## <param name="domain">
1610 ## Domain to not audit.
1611 ## </param>
1612 #
1613 interface(`userdom_dontaudit_use_sysadm_tty',`
1614 ifdef(`targeted_policy',`
1615 term_dontaudit_use_unallocated_tty($1)
1616 ',`
1617 gen_require(`
1618 type sysadm_tty_device_t;
1619 class chr_file { read write };
1620 ')
1621
1622 dontaudit $1 sysadm_tty_device_t:chr_file { read write };
1623 ')
1624 ')
1625
1626 ########################################
1627 ## <summary>
1628 ## Read and write sysadm ptys.
1629 ## </summary>
1630 ## <param name="domain">
1631 ## The type of the process performing this action.
1632 ## </param>
1633 #
1634 interface(`userdom_use_sysadm_pty',`
1635 ifdef(`targeted_policy',`
1636 term_use_generic_pty($1)
1637 ',`
1638 gen_require(`
1639 type sysadm_devpts_t;
1640 class chr_file rw_term_perms;
1641 ')
1642
1643 dev_list_all_dev_nodes($1)
1644 term_list_ptys($1)
1645 allow $1 sysadm_devpts_t:chr_file rw_term_perms;
1646 ')
1647 ')
1648
1649 ########################################
1650 ## <summary>
1651 ## Dont audit attempts to read and write sysadm ptys.
1652 ## </summary>
1653 ## <param name="domain">
1654 ## Domain to not audit.
1655 ## </param>
1656 #
1657 interface(`userdom_dontaudit_use_sysadm_pty',`
1658 ifdef(`targeted_policy',`
1659 term_dontaudit_use_generic_pty($1)
1660 ',`
1661 gen_require(`
1662 type sysadm_devpts_t;
1663 ')
1664
1665 dontaudit $1 sysadm_devpts_t:chr_file { read write };
1666 ')
1667 ')
1668
1669 ########################################
1670 ## <summary>
1671 ## Read and write sysadm ttys and ptys.
1672 ## </summary>
1673 ## <param name="domain">
1674 ## The type of the process performing this action.
1675 ## </param>
1676 #
1677 interface(`userdom_use_sysadm_terms',`
1678 userdom_use_sysadm_tty($1)
1679 userdom_use_sysadm_pty($1)
1680 ')
1681
1682 ########################################
1683 ## <summary>
1684 ## Do not audit attempts to use sysadm ttys and ptys.
1685 ## </summary>
1686 ## <param name="domain">
1687 ## Domain to not audit.
1688 ## </param>
1689 #
1690 interface(`userdom_dontaudit_use_sysadm_terms',`
1691 ifdef(`targeted_policy',`
1692 term_dontaudit_use_generic_pty($1)
1693 ',`
1694 gen_require(`
1695 attribute admin_terminal;
1696 class chr_file { read write };
1697 ')
1698
1699 dontaudit $1 admin_terminal:chr_file { read write };
1700 ')
1701 ')
1702
1703 ########################################
1704 ## <summary>
1705 ## Inherit and use sysadm file descriptors
1706 ## </summary>
1707 ## <param name="domain">
1708 ## The type of the process performing this action.
1709 ## </param>
1710 #
1711 interface(`userdom_use_sysadm_fd',`
1712 ifdef(`targeted_policy',`
1713 #cjp: need to doublecheck this one
1714 unconfined_use_fd($1)
1715 ',`
1716 gen_require(`
1717 type sysadm_t;
1718 class fd use;
1719 ')
1720
1721 allow $1 sysadm_t:fd use;
1722 ')
1723 ')
1724
1725 ########################################
1726 ## <summary>
1727 ## Read and write sysadm user unnamed pipes.
1728 ## </summary>
1729 ## <param name="domain">
1730 ## The type of the process performing this action.
1731 ## </param>
1732 #
1733 interface(`userdom_rw_sysadm_pipe',`
1734 ifdef(`targeted_policy',`
1735 #cjp: need to doublecheck this one
1736 unconfined_rw_pipe($1)
1737 ',`
1738 gen_require(`
1739 type sysadm_t;
1740 class fifo_file rw_file_perms;
1741 ')
1742
1743 allow $1 sysadm_t:fifo_file rw_file_perms;
1744 ')
1745 ')
1746
1747 ########################################
1748 ## <summary>
1749 ## Search the sysadm users home directory.
1750 ## </summary>
1751 ## <param name="domain">
1752 ## Domain to not audit.
1753 ## </param>
1754 #
1755 interface(`userdom_search_sysadm_home_dir',`
1756 gen_require(`
1757 type sysadm_home_dir_t;
1758 class dir search;
1759 ')
1760
1761 files_search_home($1)
1762 allow $1 sysadm_home_dir_t:dir search;
1763 ')
1764
1765 ########################################
1766 ## <summary>
1767 ## Do not audit attempts to search the sysadm
1768 ## users home directory.
1769 ## </summary>
1770 ## <param name="domain">
1771 ## Domain to not audit.
1772 ## </param>
1773 #
1774 interface(`userdom_dontaudit_search_sysadm_home_dir',`
1775 gen_require(`
1776 type sysadm_home_dir_t;
1777 class dir search;
1778 ')
1779
1780 dontaudit $1 sysadm_home_dir_t:dir search;
1781 ')
1782
1783 ########################################
1784 ## <summary>
1785 ## Do not audit attempts to list the sysadm
1786 ## users home directory.
1787 ## </summary>
1788 ## <param name="domain">
1789 ## Domain to not audit.
1790 ## </param>
1791 #
1792 interface(`userdom_dontaudit_list_sysadm_home_dir',`
1793 gen_require(`
1794 type sysadm_home_dir_t;
1795 class dir r_dir_perms;
1796 ')
1797
1798 dontaudit $1 sysadm_home_dir_t:dir r_dir_perms;
1799 ')
1800
1801 ########################################
1802 ## <summary>
1803 ## Read files in the sysadm users home directory.
1804 ## </summary>
1805 ## <param name="domain">
1806 ## The type of the process performing this action.
1807 ## </param>
1808 #
1809 interface(`userdom_read_sysadm_home_files',`
1810 gen_require(`
1811 type sysadm_home_dir_t, sysadm_home_t;
1812 class dir r_dir_perms;
1813 class file r_file_perms;
1814 class lnk_file r_file_perms;
1815 ')
1816
1817 files_search_home($1)
1818 allow $1 { sysadm_home_dir_t sysadm_home_t }:dir r_dir_perms;
1819 allow $1 sysadm_home_t:{ file lnk_file } r_file_perms;
1820 ')
1821
1822 ########################################
1823 ## <summary>
1824 ## Search all users home directories.
1825 ## </summary>
1826 ## <param name="domain">
1827 ## The type of the process performing this action.
1828 ## </param>
1829 #
1830 interface(`userdom_search_all_users_home',`
1831 gen_require(`
1832 attribute home_dir_type, home_type;
1833 class dir search;
1834 ')
1835
1836 files_list_home($1)
1837 allow $1 { home_dir_type home_type }:dir search;
1838 ')
1839
1840 ########################################
1841 ## <summary>
1842 ## Do not audit attempts to search all users home directories.
1843 ## </summary>
1844 ## <param name="domain">
1845 ## Domain to not audit.
1846 ## </param>
1847 #
1848 interface(`userdom_dontaudit_search_all_users_home',`
1849 gen_require(`
1850 attribute home_dir_type, home_type;
1851 class dir search;
1852 ')
1853
1854 dontaudit $1 { home_dir_type home_type }:dir search;
1855 ')
1856
1857 ########################################
1858 ## <summary>
1859 ## Read all files in all users home directories.
1860 ## </summary>
1861 ## <param name="domain">
1862 ## The type of the process performing this action.
1863 ## </param>
1864 #
1865 interface(`userdom_read_all_user_files',`
1866 gen_require(`
1867 attribute home_type;
1868 class dir r_dir_perms;
1869 class file r_file_perms;
1870 ')
1871
1872 files_list_home($1)
1873 allow $1 home_type:dir r_dir_perms;
1874 allow $1 home_type:file r_file_perms;
1875 ')
1876
1877 ########################################
1878 ## <summary>
1879 ## Create, read, write, and delete all directories
1880 ## in all users home directories.
1881 ## </summary>
1882 ## <param name="domain">
1883 ## The type of the process performing this action.
1884 ## </param>
1885 #
1886 interface(`userdom_manage_all_user_dirs',`
1887 gen_require(`
1888 attribute home_type;
1889 ')
1890
1891 files_list_home($1)
1892 allow $1 home_type:dir create_dir_perms;
1893 ')
1894
1895 ########################################
1896 ## <summary>
1897 ## Create, read, write, and delete all files
1898 ## in all users home directories.
1899 ## </summary>
1900 ## <param name="domain">
1901 ## The type of the process performing this action.
1902 ## </param>
1903 #
1904 interface(`userdom_manage_all_user_files',`
1905 gen_require(`
1906 attribute home_type;
1907 ')
1908
1909 files_list_home($1)
1910 allow $1 home_type:dir rw_dir_perms;
1911 allow $1 home_type:file create_file_perms;
1912 ')
1913
1914 ########################################
1915 ## <summary>
1916 ## Create, read, write, and delete all symlinks
1917 ## in all users home directories.
1918 ## </summary>
1919 ## <param name="domain">
1920 ## The type of the process performing this action.
1921 ## </param>
1922 #
1923 interface(`userdom_manage_all_user_symlinks',`
1924 gen_require(`
1925 attribute home_type;
1926 ')
1927
1928 files_list_home($1)
1929 allow $1 home_type:dir rw_dir_perms;
1930 allow $1 home_type:lnk_file create_lnk_perms;
1931 ')
1932
1933 ########################################
1934 ## <summary>
1935 ## Send general signals to unprivileged user domains.
1936 ## </summary>
1937 ## <param name="domain">
1938 ## The type of the process performing this action.
1939 ## </param>
1940 #
1941 interface(`userdom_signal_unpriv_users',`
1942 gen_require(`
1943 attribute unpriv_userdomain;
1944 class process signal;
1945 ')
1946
1947 allow $1 unpriv_userdomain:process signal;
1948 ')
1949
1950 ########################################
1951 ## <summary>
1952 ## Inherit the file descriptors from unprivileged user domains.
1953 ## </summary>
1954 ## <param name="domain">
1955 ## The type of the process performing this action.
1956 ## </param>
1957 #
1958 interface(`userdom_use_unpriv_users_fd',`
1959 gen_require(`
1960 attribute unpriv_userdomain;
1961 class fd use;
1962 ')
1963
1964 allow $1 unpriv_userdomain:fd use;
1965 ')
1966
1967 ########################################
1968 ## <summary>
1969 ## Do not audit attempts to inherit the
1970 ## file descriptors from all user domains.
1971 ## </summary>
1972 ## <param name="domain">
1973 ## The type of the process performing this action.
1974 ## </param>
1975 #
1976 interface(`userdom_dontaudit_use_unpriv_user_fd',`
1977 gen_require(`
1978 attribute unpriv_userdomain;
1979 class fd use;
1980 ')
1981
1982 dontaudit $1 unpriv_userdomain:fd use;
1983 ')
1984
1985 ########################################
1986 ## <summary>
1987 ## Create generic user home directories
1988 ## with automatic file type transition.
1989 ## </summary>
1990 ## <param name="domain">
1991 ## Domain allowed access.
1992 ## </param>
1993 #
1994 interface(`userdom_create_user_home_dir',`
1995 gen_require(`
1996 type user_home_dir_t;
1997 ')
1998
1999 files_create_home_dirs($1,user_home_dir_t)
2000 ')
2001
2002 ########################################
2003 ## <summary>
2004 ## Create, read, write, and delete
2005 ## generic user home directories.
2006 ## </summary>
2007 ## <param name="domain">
2008 ## Domain allowed access.
2009 ## </param>
2010 #
2011 interface(`userdom_manage_user_home_dir',`
2012 gen_require(`
2013 type user_home_dir_t;
2014 class dir create_dir_perms;
2015 ')
2016
2017 allow $1 user_home_dir_t:dir create_dir_perms;
2018 ')
2019
2020 ########################################
2021 ## <summary>
2022 ## Create objects in generic user home directories
2023 ## with automatic file type transition.
2024 ## </summary>
2025 ## <param name="domain">
2026 ## Domain allowed access.
2027 ## </param>
2028 ## <param name="object_class" optional="true">
2029 ## The class of the object to be created.
2030 ## If not specified, file is used.
2031 ## </param>
2032 #
2033 interface(`userdom_create_user_home',`
2034 gen_require(`
2035 type user_home_dir_t, user_home_t;
2036 class dir rw_dir_perms;
2037 ')
2038
2039 allow $1 user_home_dir_t:dir rw_dir_perms;
2040 ifelse(`$2',`',`
2041 type_transition $1 user_home_dir_t:file user_home_t;
2042 ',`
2043 type_transition $1 user_home_dir_t:$2 user_home_t;
2044 ')
2045 ')
2046
2047 ########################################
2048 ## <summary>
2049 ## Don't audit search on the user home subdirectory.
2050 ## </summary>
2051 ## <param name="domain">
2052 ## Domain allowed access.
2053 ## </param>
2054 #
2055 interface(`userdom_dontaudit_search_user_home_dirs',`
2056 gen_require(`
2057 type user_home_t;
2058 class dir search;
2059 ')
2060
2061 dontaudit $1 user_home_t:dir search;
2062 ')
2063
2064 ########################################
2065 ## <summary>
2066 ## Create, read, write, and delete
2067 ## subdirectories of generic user
2068 ## home directories.
2069 ## </summary>
2070 ## <param name="domain">
2071 ## Domain allowed access.
2072 ## </param>
2073 #
2074 interface(`userdom_manage_user_home_dirs',`
2075 gen_require(`
2076 type user_home_t;
2077 class dir create_dir_perms;
2078 ')
2079
2080 allow $1 user_home_t:dir create_dir_perms;
2081 ')
2082
2083 ########################################
2084 ## <summary>
2085 ## Create, read, write, and delete files
2086 ## in generic user home directories.
2087 ## </summary>
2088 ## <param name="domain">
2089 ## Domain allowed access.
2090 ## </param>
2091 #
2092 interface(`userdom_manage_user_home_files',`
2093 gen_require(`
2094 type user_home_t;
2095 class dir rw_dir_perms;
2096 class file create_file_perms;
2097 ')
2098
2099 allow $1 user_home_t:dir rw_dir_perms;
2100 allow $1 user_home_t:file create_file_perms;
2101 ')
2102
2103 ########################################
2104 ## <summary>
2105 ## Create, read, write, and delete symbolic
2106 ## links in generic user home directories.
2107 ## </summary>
2108 ## <param name="domain">
2109 ## Domain allowed access.
2110 ## </param>
2111 #
2112 interface(`userdom_manage_user_home_symlinks',`
2113 gen_require(`
2114 type user_home_t;
2115 class dir rw_dir_perms;
2116 class lnk_file create_lnk_perms;
2117 ')
2118
2119 allow $1 user_home_t:dir rw_dir_perms;
2120 allow $1 user_home_t:lnk_file create_lnk_perms;
2121 ')
2122
2123 ########################################
2124 ## <summary>
2125 ## Create, read, write, and delete named
2126 ## pipes in generic user home directories.
2127 ## </summary>
2128 ## <param name="domain">
2129 ## Domain allowed access.
2130 ## </param>
2131 #
2132 interface(`userdom_manage_user_home_pipes',`
2133 gen_require(`
2134 type user_home_t;
2135 class dir rw_dir_perms;
2136 class fifo_file create_file_perms;
2137 ')
2138
2139 allow $1 user_home_t:dir rw_dir_perms;
2140 allow $1 user_home_t:fifo_file create_file_perms;
2141 ')
2142
2143 ########################################
2144 ## <summary>
2145 ## Create, read, write, and delete named
2146 ## sockets in generic user home directories.
2147 ## </summary>
2148 ## <param name="domain">
2149 ## Domain allowed access.
2150 ## </param>
2151 #
2152 interface(`userdom_manage_user_home_sockets',`
2153 gen_require(`
2154 type user_home_t;
2155 class dir rw_dir_perms;
2156 class sock_file create_file_perms;
2157 ')
2158
2159 allow $1 user_home_t:dir rw_dir_perms;
2160 allow $1 user_home_t:sock_file create_file_perms;
2161 ')
2162
2163 ########################################
2164 ## <summary>
2165 ## Read all unprivileged users home directory
2166 ## files.
2167 ## </summary>
2168 ## <param name="domain">
2169 ## Domain allowed access.
2170 ## </param>
2171 #
2172 interface(`userdom_read_unpriv_user_home_files',`
2173 gen_require(`
2174 type user_home_dir_type, user_home_type;
2175 ')
2176
2177 allow $1 user_home_dir_type:dir search;
2178 allow $1 user_home_type:file r_file_perms;
2179 ')
2180
2181 ########################################
2182 ## <summary>
2183 ## Write all unprivileged users files in /tmp
2184 ## </summary>
2185 ## <param name="domain">
2186 ## The type of the process performing this action.
2187 ## </param>
2188 #
2189 interface(`userdom_write_unpriv_user_tmp',`
2190 gen_require(`
2191 attribute user_tmpfile;
2192 class file { getattr write append };
2193 ')
2194
2195 allow $1 user_tmpfile:file { getattr write append };
2196 ')
2197
2198 ########################################
2199 ## <summary>
2200 ## Do not audit attempts to use unprivileged
2201 ## user ttys.
2202 ## </summary>
2203 ## <param name="domain">
2204 ## The type of the process performing this action.
2205 ## </param>
2206 #
2207 interface(`userdom_dontaudit_use_unpriv_user_tty',`
2208 gen_require(`
2209 attribute user_ttynode;
2210 class chr_file rw_file_perms;
2211 ')
2212
2213 dontaudit $1 user_ttynode:chr_file rw_file_perms;
2214 ')
2215
2216 ########################################
2217 ## <summary>
2218 ## Inherit the file descriptors from all user domains
2219 ## </summary>
2220 ## <param name="domain">
2221 ## The type of the process performing this action.
2222 ## </param>
2223 #
2224 interface(`userdom_use_all_user_fd',`
2225 gen_require(`
2226 attribute userdomain;
2227 class fd use;
2228 ')
2229
2230 allow $1 userdomain:fd use;
2231 ')
2232
2233 ########################################
2234 ## <summary>
2235 ## Do not audit attempts to inherit the file
2236 ## descriptors from any user domains.
2237 ## </summary>
2238 ## <param name="domain">
2239 ## Domain to not audit.
2240 ## </param>
2241 #
2242 interface(`userdom_dontaudit_use_all_user_fd',`
2243 gen_require(`
2244 attribute userdomain;
2245 class fd use;
2246 ')
2247
2248 dontaudit $1 userdomain:fd use;
2249 ')
2250
2251 ########################################
2252 ## <summary>
2253 ## Send general signals to all user domains.
2254 ## </summary>
2255 ## <param name="domain">
2256 ## The type of the process performing this action.
2257 ## </param>
2258 #
2259 interface(`userdom_signal_all_users',`
2260 gen_require(`
2261 attribute userdomain;
2262 class process signal;
2263 ')
2264
2265 allow $1 userdomain:process signal;
2266 ')
2267
2268 ########################################
2269 ## <summary>
2270 ## Send a SIGCHLD signal to all user domains.
2271 ## </summary>
2272 ## <param name="domain">
2273 ## Domain allowed access.
2274 ## </param>
2275 #
2276 interface(`userdom_sigcld_all_users',`
2277 gen_require(`
2278 attribute userdomain;
2279 class process sigchld;
2280 ')
2281
2282 allow $1 userdomain:process sigchld;
2283 ')
2284
2285 ########################################
2286 ## <summary>
2287 ## Unconfined access to user domains.
2288 ## </summary>
2289 ## <param name="domain">
2290 ## Domain allowed access.
2291 ## </param>
2292 #
2293 interface(`userdom_unconfined',`
2294 gen_require(`
2295 type user_home_dir_t;
2296 class dir create_dir_perms;
2297 ')
2298
2299 allow $1 user_home_dir_t:dir create_dir_perms;
2300 files_create_home_dirs($1,user_home_dir_t)
2301 ')