]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - policy/modules/system/userdomain.if
Merge upstream
[people/stevee/selinux-policy.git] / policy / modules / system / userdomain.if
CommitLineData
490639cd 1## <summary>Policy for user domains</summary>
b16c6b8c 2
8fd36732
CP
3#######################################
4## <summary>
bbcd3c97 5## The template containing the most basic rules common to all users.
8fd36732
CP
6## </summary>
7## <desc>
8## <p>
bbcd3c97 9## The template containing the most basic rules common to all users.
8fd36732
CP
10## </p>
11## <p>
bbcd3c97
CP
12## This template creates a user domain, types, and
13## rules for the user's tty and pty.
8fd36732
CP
14## </p>
15## </desc>
16## <param name="userdomain_prefix">
885b83ec 17## <summary>
8fd36732
CP
18## The prefix of the user domain (e.g., user
19## is the prefix for user_t).
885b83ec 20## </summary>
8fd36732 21## </param>
bbcd3c97 22## <rolebase/>
b16c6b8c 23#
bbcd3c97 24template(`userdom_base_user_template',`
c6a60bb2
CP
25
26 gen_require(`
d6d16b97 27 attribute userdomain;
296273a7 28 type user_devpts_t, user_tty_device_t;
c6a60bb2
CP
29 class context contains;
30 ')
31
0c73cd25 32 attribute $1_file_type;
3eaa9939 33 attribute $1_usertype;
0c73cd25 34
3eaa9939 35 type $1_t, userdomain, $1_usertype;
c9428d33
CP
36 domain_type($1_t)
37 corecmd_shell_entry_type($1_t)
d40c0ecf 38 corecmd_bin_entry_type($1_t)
2e863f8a 39 domain_user_exemption_target($1_t)
296273a7 40 ubac_constrained($1_t)
0c73cd25
CP
41 role $1_r types $1_t;
42 allow system_r $1_r;
43
296273a7 44 term_user_pty($1_t, user_devpts_t)
0c73cd25 45
296273a7 46 term_user_tty($1_t, user_tty_device_t)
3eaa9939
DW
47 term_dontaudit_getattr_generic_ptys($1_t)
48
49 allow $1_usertype $1_usertype:process { ptrace signal_perms getsched setsched share getpgid setpgid getcap setcap getsession getattr };
50 allow $1_usertype $1_usertype:fd use;
51 allow $1_usertype $1_t:key { create view read write search link setattr };
52
53 allow $1_usertype $1_usertype:fifo_file rw_fifo_file_perms;
54 allow $1_usertype $1_usertype:unix_dgram_socket { create_socket_perms sendto };
55 allow $1_usertype $1_usertype:unix_stream_socket { create_stream_socket_perms connectto };
56 allow $1_usertype $1_usertype:shm create_shm_perms;
57 allow $1_usertype $1_usertype:sem create_sem_perms;
58 allow $1_usertype $1_usertype:msgq create_msgq_perms;
59 allow $1_usertype $1_usertype:msg { send receive };
60 allow $1_usertype $1_usertype:context contains;
61 dontaudit $1_usertype $1_usertype:socket create;
62
63 allow $1_usertype user_devpts_t:chr_file { setattr rw_chr_file_perms };
64 term_create_pty($1_usertype, user_devpts_t)
296273a7 65 # avoid annoying messages on terminal hangup on role change
3eaa9939 66 dontaudit $1_usertype user_devpts_t:chr_file ioctl;
0c73cd25 67
3eaa9939 68 allow $1_usertype user_tty_device_t:chr_file { setattr rw_chr_file_perms };
296273a7 69 # avoid annoying messages on terminal hangup on role change
3eaa9939
DW
70 dontaudit $1_usertype user_tty_device_t:chr_file ioctl;
71
72 application_exec_all($1_usertype)
73
74 kernel_read_kernel_sysctls($1_usertype)
75 kernel_read_all_sysctls($1_usertype)
76 kernel_dontaudit_list_unlabeled($1_usertype)
77 kernel_dontaudit_getattr_unlabeled_files($1_usertype)
78 kernel_dontaudit_getattr_unlabeled_symlinks($1_usertype)
79 kernel_dontaudit_getattr_unlabeled_pipes($1_usertype)
80 kernel_dontaudit_getattr_unlabeled_sockets($1_usertype)
81 kernel_dontaudit_getattr_unlabeled_blk_files($1_usertype)
82 kernel_dontaudit_getattr_unlabeled_chr_files($1_usertype)
83 kernel_dontaudit_list_proc($1_usertype)
84
85 dev_dontaudit_getattr_all_blk_files($1_usertype)
86 dev_dontaudit_getattr_all_chr_files($1_usertype)
87 dev_getattr_mtrr_dev($1_t)
847937da 88
2ec4c9d3 89 # When the user domain runs ps, there will be a number of access
ff8f0a63 90 # denials when ps tries to search /proc. Do not audit these denials.
3eaa9939
DW
91 domain_dontaudit_read_all_domains_state($1_usertype)
92 domain_dontaudit_getattr_all_domains($1_usertype)
93 domain_dontaudit_getsession_all_domains($1_usertype)
94
95 files_read_etc_files($1_usertype)
96 files_list_mnt($1_usertype)
97 files_read_mnt_files($1_usertype)
98 files_read_etc_runtime_files($1_usertype)
99 files_read_usr_files($1_usertype)
100 files_read_usr_src_files($1_usertype)
bbcd3c97
CP
101 # Read directories and files with the readable_t type.
102 # This type is a general type for "world"-readable files.
3eaa9939
DW
103 files_list_world_readable($1_usertype)
104 files_read_world_readable_files($1_usertype)
105 files_read_world_readable_symlinks($1_usertype)
106 files_read_world_readable_pipes($1_usertype)
107 files_read_world_readable_sockets($1_usertype)
a2868f6e 108 # old broswer_domain():
3eaa9939
DW
109 files_dontaudit_getattr_all_dirs($1_usertype)
110 files_dontaudit_list_non_security($1_usertype)
111 files_dontaudit_getattr_all_files($1_usertype)
112 files_dontaudit_getattr_non_security_symlinks($1_usertype)
113 files_dontaudit_getattr_non_security_pipes($1_usertype)
114 files_dontaudit_getattr_non_security_sockets($1_usertype)
115
116 files_exec_usr_files($1_t)
117
118 fs_list_cgroup_dirs($1_usertype)
119 fs_dontaudit_rw_cgroup_files($1_usertype)
120
121 storage_rw_fuse($1_usertype)
122
123 auth_use_nsswitch($1_usertype)
0c73cd25 124
3eaa9939 125 init_stream_connect($1_usertype)
9461b606
DW
126 # The library functions always try to open read-write first,
127 # then fall back to read-only if it fails.
128 init_dontaudit_rw_utmp($1_usertype)
bbcd3c97 129
3eaa9939 130 libs_exec_ld_so($1_usertype)
6b19be33 131
bbcd3c97 132 miscfiles_read_localization($1_t)
83406219 133 miscfiles_read_generic_certs($1_t)
6b19be33 134
cab9bc9c 135 miscfiles_read_all_certs($1_usertype)
3eaa9939
DW
136 miscfiles_read_localization($1_usertype)
137 miscfiles_read_man_pages($1_usertype)
138 miscfiles_read_public_files($1_usertype)
bbcd3c97
CP
139
140 tunable_policy(`allow_execmem',`
141 # Allow loading DSOs that require executable stack.
142 allow $1_t self:process execmem;
143 ')
144
145 tunable_policy(`allow_execmem && allow_execstack',`
146 # Allow making the stack executable via mprotect.
147 allow $1_t self:process execstack;
148 ')
3eaa9939
DW
149
150 optional_policy(`
151 fs_list_cgroup_dirs($1_usertype)
152 ')
153
154 optional_policy(`
155 ssh_rw_stream_sockets($1_usertype)
156 ssh_delete_tmp($1_t)
157 ssh_signal($1_t)
158 ')
bbcd3c97
CP
159')
160
161#######################################
162## <summary>
296273a7
CP
163## Allow a home directory for which the
164## role has read-only access.
bbcd3c97
CP
165## </summary>
166## <desc>
167## <p>
296273a7
CP
168## Allow a home directory for which the
169## role has read-only access.
bbcd3c97
CP
170## </p>
171## <p>
172## This does not allow execute access.
173## </p>
174## </desc>
296273a7 175## <param name="role">
bbcd3c97 176## <summary>
296273a7
CP
177## The user role
178## </summary>
179## </param>
180## <param name="userdomain">
181## <summary>
182## The user domain
bbcd3c97
CP
183## </summary>
184## </param>
185## <rolebase/>
186#
296273a7 187interface(`userdom_ro_home_role',`
d6d16b97 188 gen_require(`
296273a7 189 type user_home_t, user_home_dir_t;
d6d16b97
CP
190 ')
191
3eaa9939
DW
192 role $1 types { user_home_t user_home_dir_t };
193
bbcd3c97
CP
194 ##############################
195 #
196 # Domain access to home dir
197 #
198
296273a7
CP
199 type_member $2 user_home_dir_t:dir user_home_dir_t;
200
bbcd3c97 201 # read-only home directory
296273a7
CP
202 allow $2 user_home_dir_t:dir list_dir_perms;
203 allow $2 user_home_t:dir list_dir_perms;
204 allow $2 user_home_t:file entrypoint;
205 read_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t)
206 read_lnk_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t)
207 read_fifo_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t)
208 read_sock_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t)
209 files_list_home($2)
bbcd3c97 210
bbcd3c97
CP
211')
212
213#######################################
214## <summary>
296273a7
CP
215## Allow a home directory for which the
216## role has full access.
bbcd3c97
CP
217## </summary>
218## <desc>
219## <p>
296273a7
CP
220## Allow a home directory for which the
221## role has full access.
bbcd3c97
CP
222## </p>
223## <p>
224## This does not allow execute access.
225## </p>
226## </desc>
296273a7 227## <param name="role">
bbcd3c97 228## <summary>
296273a7
CP
229## The user role
230## </summary>
231## </param>
232## <param name="userdomain">
233## <summary>
234## The user domain
bbcd3c97
CP
235## </summary>
236## </param>
237## <rolebase/>
238#
296273a7 239interface(`userdom_manage_home_role',`
d6d16b97 240 gen_require(`
296273a7 241 type user_home_t, user_home_dir_t;
3eaa9939 242 attribute user_home_type;
d6d16b97
CP
243 ')
244
3eaa9939
DW
245 role $1 types { user_home_type user_home_dir_t };
246
bbcd3c97
CP
247 ##############################
248 #
249 # Domain access to home dir
250 #
251
296273a7
CP
252 type_member $2 user_home_dir_t:dir user_home_dir_t;
253
bbcd3c97 254 # full control of the home directory
3eaa9939 255 allow $2 user_home_t:dir mounton;
296273a7 256 allow $2 user_home_t:file entrypoint;
3eaa9939
DW
257
258 allow $2 user_home_type:dir_file_class_set { relabelto relabelfrom };
259 allow $2 user_home_dir_t:lnk_file read_lnk_file_perms;
260 manage_dirs_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
261 manage_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
262 manage_lnk_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
263 manage_sock_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
264 manage_fifo_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
265 relabel_dirs_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
266 relabel_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
267 relabel_lnk_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
268 relabel_sock_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
269 relabel_fifo_files_pattern($2, { user_home_dir_t user_home_type }, user_home_type)
296273a7
CP
270 filetrans_pattern($2, user_home_dir_t, user_home_t, { dir file lnk_file sock_file fifo_file })
271 files_list_home($2)
bbcd3c97 272
c0868a7a 273 # cjp: this should probably be removed:
296273a7 274 allow $2 user_home_dir_t:dir { manage_dir_perms relabel_dir_perms };
c0868a7a 275
bbcd3c97 276 tunable_policy(`use_nfs_home_dirs',`
3eaa9939
DW
277 fs_mount_nfs($2)
278 fs_mounton_nfs($2)
296273a7
CP
279 fs_manage_nfs_dirs($2)
280 fs_manage_nfs_files($2)
281 fs_manage_nfs_symlinks($2)
282 fs_manage_nfs_named_sockets($2)
283 fs_manage_nfs_named_pipes($2)
bbcd3c97
CP
284 ')
285
286 tunable_policy(`use_samba_home_dirs',`
3eaa9939
DW
287 fs_mount_cifs($2)
288 fs_mounton_cifs($2)
296273a7
CP
289 fs_manage_cifs_dirs($2)
290 fs_manage_cifs_files($2)
291 fs_manage_cifs_symlinks($2)
292 fs_manage_cifs_named_sockets($2)
293 fs_manage_cifs_named_pipes($2)
bbcd3c97
CP
294 ')
295')
296
297#######################################
298## <summary>
296273a7 299## Manage user temporary files
bbcd3c97 300## </summary>
296273a7 301## <param name="role">
bbcd3c97 302## <summary>
296273a7 303## Role allowed access.
bbcd3c97
CP
304## </summary>
305## </param>
296273a7 306## <param name="domain">
bbcd3c97 307## <summary>
296273a7 308## Domain allowed access.
bbcd3c97
CP
309## </summary>
310## </param>
311## <rolebase/>
312#
296273a7 313interface(`userdom_manage_tmp_role',`
d6d16b97 314 gen_require(`
296273a7 315 type user_tmp_t;
d6d16b97
CP
316 ')
317
3eaa9939
DW
318 role $1 types user_tmp_t;
319
296273a7 320 files_poly_member_tmp($2, user_tmp_t)
bbcd3c97 321
296273a7
CP
322 manage_dirs_pattern($2, user_tmp_t, user_tmp_t)
323 manage_files_pattern($2, user_tmp_t, user_tmp_t)
324 manage_lnk_files_pattern($2, user_tmp_t, user_tmp_t)
325 manage_sock_files_pattern($2, user_tmp_t, user_tmp_t)
326 manage_fifo_files_pattern($2, user_tmp_t, user_tmp_t)
327 files_tmp_filetrans($2, user_tmp_t, { dir file lnk_file sock_file fifo_file })
3eaa9939
DW
328 relabel_files_pattern($2, user_tmp_t, user_tmp_t)
329')
330
331#######################################
332## <summary>
333## Dontaudit search of user bin dirs.
334## </summary>
335## <param name="domain">
336## <summary>
337## Domain allowed access.
338## </summary>
339## </param>
340#
341interface(`userdom_dontaudit_search_user_bin_dirs',`
342 gen_require(`
343 type home_bin_t;
344 ')
345
346 dontaudit $1 home_bin_t:dir search_dir_perms;
347')
348
349#######################################
350## <summary>
351## Execute user bin files.
352## </summary>
353## <param name="domain">
354## <summary>
355## Domain allowed access.
356## </summary>
357## </param>
358#
359interface(`userdom_exec_user_bin_files',`
360 gen_require(`
361 attribute user_home_type;
362 type home_bin_t, user_home_dir_t;
363 ')
364
365 exec_files_pattern($1, { user_home_dir_t user_home_type }, home_bin_t)
366 files_search_home($1)
bbcd3c97
CP
367')
368
369#######################################
370## <summary>
296273a7 371## The execute access user temporary files.
bbcd3c97 372## </summary>
296273a7 373## <param name="domain">
bbcd3c97 374## <summary>
296273a7 375## Domain allowed access.
bbcd3c97
CP
376## </summary>
377## </param>
378## <rolebase/>
379#
296273a7
CP
380interface(`userdom_exec_user_tmp_files',`
381 gen_require(`
382 type user_tmp_t;
383 ')
384
385 exec_files_pattern($1, user_tmp_t, user_tmp_t)
3eaa9939 386 dontaudit $1 user_tmp_t:sock_file execute;
296273a7 387 files_search_tmp($1)
bbcd3c97
CP
388')
389
390#######################################
391## <summary>
296273a7 392## Role access for the user tmpfs type
bbcd3c97
CP
393## that the user has full access.
394## </summary>
395## <desc>
396## <p>
296273a7 397## Role access for the user tmpfs type
bbcd3c97
CP
398## that the user has full access.
399## </p>
400## <p>
401## This does not allow execute access.
402## </p>
403## </desc>
296273a7 404## <param name="role">
bbcd3c97 405## <summary>
296273a7 406## Role allowed access.
bbcd3c97
CP
407## </summary>
408## </param>
296273a7 409## <param name="domain">
bbcd3c97 410## <summary>
296273a7 411## Domain allowed access.
bbcd3c97
CP
412## </summary>
413## </param>
296273a7 414## <rolecap/>
bbcd3c97 415#
296273a7 416interface(`userdom_manage_tmpfs_role',`
bbcd3c97 417 gen_require(`
296273a7 418 type user_tmpfs_t;
bbcd3c97 419 ')
bbcd3c97 420
3eaa9939
DW
421 role $1 types user_tmpfs_t;
422
296273a7
CP
423 manage_dirs_pattern($2, user_tmpfs_t, user_tmpfs_t)
424 manage_files_pattern($2, user_tmpfs_t, user_tmpfs_t)
425 manage_lnk_files_pattern($2, user_tmpfs_t, user_tmpfs_t)
426 manage_sock_files_pattern($2, user_tmpfs_t, user_tmpfs_t)
427 manage_fifo_files_pattern($2, user_tmpfs_t, user_tmpfs_t)
428 fs_tmpfs_filetrans($2, user_tmpfs_t, { dir file lnk_file sock_file fifo_file })
bbcd3c97
CP
429')
430
431#######################################
432## <summary>
3eaa9939 433## The interface allowing the user basic
bbcd3c97
CP
434## network permissions
435## </summary>
3eaa9939 436## <param name="userdomain">
bbcd3c97 437## <summary>
3eaa9939 438## The user domain
bbcd3c97
CP
439## </summary>
440## </param>
441## <rolebase/>
442#
3eaa9939
DW
443interface(`userdom_basic_networking',`
444
445 allow $1 self:tcp_socket create_stream_socket_perms;
446 allow $1 self:udp_socket create_socket_perms;
447
448 corenet_all_recvfrom_unlabeled($1)
449 corenet_all_recvfrom_netlabel($1)
450 corenet_tcp_sendrecv_generic_if($1)
451 corenet_udp_sendrecv_generic_if($1)
452 corenet_tcp_sendrecv_generic_node($1)
453 corenet_udp_sendrecv_generic_node($1)
454 corenet_tcp_sendrecv_all_ports($1)
455 corenet_udp_sendrecv_all_ports($1)
456 corenet_tcp_connect_all_ports($1)
457 corenet_sendrecv_all_client_packets($1)
dc1920b2
CP
458
459 optional_policy(`
3eaa9939
DW
460 init_tcp_recvfrom_all_daemons($1)
461 init_udp_recvfrom_all_daemons($1)
dc1920b2
CP
462 ')
463
0b6acad1 464 optional_policy(`
3eaa9939 465 ipsec_match_default_spd($1)
0b6acad1 466 ')
3eaa9939 467
bbcd3c97
CP
468')
469
470#######################################
471## <summary>
93c49bdb 472## The template for creating a user xwindows client. (Deprecated)
bbcd3c97
CP
473## </summary>
474## <param name="userdomain_prefix">
475## <summary>
476## The prefix of the user domain (e.g., user
477## is the prefix for user_t).
478## </summary>
479## </param>
480## <rolebase/>
481#
482template(`userdom_xwindows_client_template',`
93c49bdb 483 refpolicywarn(`$0() has been deprecated, please use xserver_role() instead.')
bbcd3c97 484 gen_require(`
296273a7 485 type $1_t, user_tmpfs_t;
bbcd3c97
CP
486 ')
487
847937da
CP
488 dev_rw_xserver_misc($1_t)
489 dev_rw_power_management($1_t)
490 dev_read_input($1_t)
491 dev_read_misc($1_t)
492 dev_write_misc($1_t)
493 # open office is looking for the following
494 dev_getattr_agp_dev($1_t)
495 dev_dontaudit_rw_dri($1_t)
496 # GNOME checks for usb and other devices:
497 dev_rw_usbfs($1_t)
3eaa9939 498 dev_rw_generic_usb_dev($1_t)
847937da 499
4279891d 500 xserver_user_x_domain_template($1, $1_t, user_tmpfs_t)
847937da
CP
501 xserver_xsession_entry_type($1_t)
502 xserver_dontaudit_write_log($1_t)
503 xserver_stream_connect_xdm($1_t)
504 # certain apps want to read xdm.pid file
505 xserver_read_xdm_pid($1_t)
506 # gnome-session creates socket under /tmp/.ICE-unix/
507 xserver_create_xdm_tmp_sockets($1_t)
508 # Needed for escd, remove if we get escd policy
509 xserver_manage_xdm_tmp_files($1_t)
bbcd3c97
CP
510')
511
512#######################################
513## <summary>
514## The template for allowing the user to change passwords.
515## </summary>
516## <param name="userdomain_prefix">
517## <summary>
518## The prefix of the user domain (e.g., user
519## is the prefix for user_t).
520## </summary>
521## </param>
522## <rolebase/>
523#
524template(`userdom_change_password_template',`
525 gen_require(`
296273a7 526 type $1_t;
bbcd3c97
CP
527 role $1_r;
528 ')
529
530 optional_policy(`
296273a7
CP
531 usermanage_run_chfn($1_t,$1_r)
532 usermanage_run_passwd($1_t,$1_r)
bbcd3c97 533 ')
bbcd3c97
CP
534')
535
536#######################################
537## <summary>
538## The template containing rules common to unprivileged
539## users and administrative users.
540## </summary>
541## <desc>
542## <p>
543## This template creates a user domain, types, and
544## rules for the user's tty, pty, tmp, and tmpfs files.
545## </p>
546## </desc>
547## <param name="userdomain_prefix">
548## <summary>
549## The prefix of the user domain (e.g., user
550## is the prefix for user_t).
551## </summary>
552## </param>
553#
554template(`userdom_common_user_template',`
563e58e8
CP
555 gen_require(`
556 attribute unpriv_userdomain;
557 ')
bbcd3c97 558
3eaa9939 559 userdom_basic_networking($1_usertype)
bbcd3c97 560
bbcd3c97
CP
561 ##############################
562 #
563 # User domain Local policy
564 #
565
bbcd3c97
CP
566 # evolution and gnome-session try to create a netlink socket
567 dontaudit $1_t self:netlink_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown };
568 dontaudit $1_t self:netlink_route_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown nlmsg_read nlmsg_write };
3eaa9939
DW
569 allow $1_t self:netlink_kobject_uevent_socket create_socket_perms;
570 allow $1_t self:socket create_socket_perms;
bbcd3c97 571
3eaa9939 572 allow $1_usertype unpriv_userdomain:fd use;
bbcd3c97 573
3eaa9939
DW
574 kernel_read_system_state($1_usertype)
575 kernel_read_network_state($1_usertype)
576 kernel_read_net_sysctls($1_usertype)
bbcd3c97 577 # Very permissive allowing every domain to see every type:
3eaa9939 578 kernel_get_sysvipc_info($1_usertype)
bbcd3c97 579 # Find CDROM devices:
3eaa9939
DW
580 kernel_read_device_sysctls($1_usertype)
581 kernel_request_load_module($1_usertype)
296273a7 582
3eaa9939
DW
583 corenet_udp_bind_generic_node($1_usertype)
584 corenet_udp_bind_generic_port($1_usertype)
bbcd3c97 585
3eaa9939
DW
586 dev_read_rand($1_usertype)
587 dev_write_sound($1_usertype)
588 dev_read_sound($1_usertype)
589 dev_read_sound_mixer($1_usertype)
590 dev_write_sound_mixer($1_usertype)
bbcd3c97 591
3eaa9939
DW
592 files_exec_etc_files($1_usertype)
593 files_search_locks($1_usertype)
bbcd3c97 594 # Check to see if cdrom is mounted
3eaa9939 595 files_search_mnt($1_usertype)
bbcd3c97 596 # cjp: perhaps should cut back on file reads:
3eaa9939
DW
597 files_read_var_files($1_usertype)
598 files_read_var_symlinks($1_usertype)
599 files_read_generic_spool($1_usertype)
600 files_read_var_lib_files($1_usertype)
bbcd3c97 601 # Stat lost+found.
3eaa9939
DW
602 files_getattr_lost_found_dirs($1_usertype)
603 files_read_config_files($1_usertype)
604 fs_read_noxattr_fs_files($1_usertype)
605 fs_read_noxattr_fs_symlinks($1_usertype)
606 fs_rw_cgroup_files($1_usertype)
bbcd3c97 607
3eaa9939
DW
608 logging_send_syslog_msg($1_usertype)
609 logging_send_audit_msgs($1_usertype)
610 selinux_get_enforce_mode($1_usertype)
e2b9add5 611
bbcd3c97 612 # cjp: some of this probably can be removed
3eaa9939
DW
613 selinux_get_fs_mount($1_usertype)
614 selinux_validate_context($1_usertype)
615 selinux_compute_access_vector($1_usertype)
616 selinux_compute_create_context($1_usertype)
617 selinux_compute_relabel_context($1_usertype)
618 selinux_compute_user_contexts($1_usertype)
bbcd3c97
CP
619
620 # for eject
3eaa9939 621 storage_getattr_fixed_disk_dev($1_usertype)
bbcd3c97 622
3eaa9939 623 auth_read_login_records($1_usertype)
296273a7
CP
624 auth_run_pam($1_t,$1_r)
625 auth_run_utempter($1_t,$1_r)
bbcd3c97 626
3eaa9939 627 init_read_utmp($1_usertype)
0c73cd25 628
3eaa9939
DW
629 seutil_read_file_contexts($1_usertype)
630 seutil_read_default_contexts($1_usertype)
296273a7 631 seutil_run_newrole($1_t,$1_r)
6b19be33 632 seutil_exec_checkpolicy($1_t)
3eaa9939 633 seutil_exec_setfiles($1_usertype)
bbcd3c97
CP
634 # for when the network connection is killed
635 # this is needed when a login role can change
636 # to this one.
637 seutil_dontaudit_signal_newrole($1_t)
a1fcff33 638
34c8fabe 639 tunable_policy(`user_direct_mouse',`
3eaa9939 640 dev_read_mouse($1_usertype)
34c8fabe 641 ')
0c73cd25 642
34c8fabe 643 tunable_policy(`user_ttyfile_stat',`
c3c753f7 644 term_getattr_all_ttys($1_t)
34c8fabe 645 ')
0c73cd25 646
6b19be33 647 optional_policy(`
3eaa9939 648 alsa_read_rw_config($1_usertype)
6b19be33
CP
649 ')
650
bb7170f6 651 optional_policy(`
ac9aa26d 652 # Allow graphical boot to check battery lifespan
3eaa9939 653 apm_stream_connect($1_usertype)
ac9aa26d
CP
654 ')
655
bb7170f6 656 optional_policy(`
3eaa9939 657 canna_stream_connect($1_usertype)
3509484c
CP
658 ')
659
bb7170f6 660 optional_policy(`
3eaa9939
DW
661 chrome_role($1_r, $1_usertype)
662 ')
663
664 optional_policy(`
665 dbus_system_bus_client($1_usertype)
666
667 allow $1_usertype $1_usertype:dbus send_msg;
668
669 optional_policy(`
670 avahi_dbus_chat($1_usertype)
671 ')
672
673 optional_policy(`
674 policykit_dbus_chat($1_usertype)
675 ')
676
677 optional_policy(`
678 bluetooth_dbus_chat($1_usertype)
679 ')
680
681 optional_policy(`
682 consolekit_dbus_chat($1_usertype)
683 consolekit_read_log($1_usertype)
684 ')
685
686 optional_policy(`
687 devicekit_dbus_chat($1_usertype)
688 devicekit_dbus_chat_power($1_usertype)
689 devicekit_dbus_chat_disk($1_usertype)
690 ')
691
692 optional_policy(`
693 evolution_dbus_chat($1_usertype)
694 evolution_alarm_dbus_chat($1_usertype)
695 ')
d828b5ca 696
bbcd3c97 697 optional_policy(`
3eaa9939 698 gnome_dbus_chat_gconfdefault($1_usertype)
bbcd3c97
CP
699 ')
700
6b19be33 701 optional_policy(`
3eaa9939 702 hal_dbus_chat($1_usertype)
6b19be33
CP
703 ')
704
bb7170f6 705 optional_policy(`
3eaa9939 706 modemmanager_dbus_chat($1_usertype)
9fd4b818
CP
707 ')
708
bb7170f6 709 optional_policy(`
3eaa9939
DW
710 networkmanager_dbus_chat($1_usertype)
711 networkmanager_read_lib_files($1_usertype)
ac9aa26d
CP
712 ')
713
bb7170f6 714 optional_policy(`
3eaa9939 715 vpn_dbus_chat($1_usertype)
d828b5ca 716 ')
0c3d1705
CP
717 ')
718
bb7170f6 719 optional_policy(`
3eaa9939
DW
720 git_session_role($1_r, $1_usertype)
721 ')
722
723 optional_policy(`
724 inetd_use_fds($1_usertype)
725 inetd_rw_tcp_sockets($1_usertype)
b24f35d8
CP
726 ')
727
bb7170f6 728 optional_policy(`
3eaa9939
DW
729 inn_read_config($1_usertype)
730 inn_read_news_lib($1_usertype)
731 inn_read_news_spool($1_usertype)
9b06402e
CP
732 ')
733
6b19be33 734 optional_policy(`
3eaa9939 735 locate_read_lib_files($1_usertype)
6b19be33
CP
736 ')
737
bbcd3c97
CP
738 # for running depmod as part of the kernel packaging process
739 optional_policy(`
3eaa9939
DW
740 modutils_read_module_config($1_usertype)
741 ')
742
743 optional_policy(`
744 mta_rw_spool($1_usertype)
745 mta_manage_queue($1_usertype)
bbcd3c97
CP
746 ')
747
cc0c00d0 748 optional_policy(`
3eaa9939 749 nsplugin_role($1_r, $1_usertype)
cc0c00d0
CP
750 ')
751
bb7170f6 752 optional_policy(`
bbcd3c97
CP
753 tunable_policy(`allow_user_mysql_connect',`
754 mysql_stream_connect($1_t)
42be7c21
CP
755 ')
756 ')
757
bb7170f6 758 optional_policy(`
2ec4c9d3 759 # to allow monitoring of pcmcia status
3eaa9939 760 pcmcia_read_pid($1_usertype)
2ec4c9d3
CP
761 ')
762
6b19be33 763 optional_policy(`
3eaa9939
DW
764 pcscd_read_pub_files($1_usertype)
765 pcscd_stream_connect($1_usertype)
6b19be33
CP
766 ')
767
cb10a2d5
CP
768 optional_policy(`
769 tunable_policy(`allow_user_postgresql_connect',`
3eaa9939
DW
770 postgresql_stream_connect($1_usertype)
771 postgresql_tcp_connect($1_usertype)
cb10a2d5
CP
772 ')
773 ')
774
b057be8d 775 optional_policy(`
3eaa9939 776 resmgr_stream_connect($1_usertype)
b057be8d
CP
777 ')
778
bb7170f6 779 optional_policy(`
3eaa9939
DW
780 rpc_dontaudit_getattr_exports($1_usertype)
781 rpc_manage_nfs_rw_content($1_usertype)
f00434fa
CP
782 ')
783
bb7170f6 784 optional_policy(`
3eaa9939 785 rpcbind_stream_connect($1_usertype)
ac9aa26d
CP
786 ')
787
bb7170f6 788 optional_policy(`
3eaa9939 789 samba_stream_connect_winbind($1_usertype)
1d427acc
CP
790 ')
791
bb7170f6 792 optional_policy(`
3eaa9939 793 sandbox_transition($1_usertype, $1_r)
8cc49473 794 ')
3eaa9939
DW
795
796 optional_policy(`
797 seunshare_role_template($1, $1_r, $1_t)
798 ')
799
800 optional_policy(`
801 slrnpull_search_spool($1_usertype)
802 ')
803
2ec4c9d3 804')
b16c6b8c 805
8fd36732
CP
806#######################################
807## <summary>
847937da 808## The template for creating a login user.
8fd36732
CP
809## </summary>
810## <desc>
811## <p>
812## This template creates a user domain, types, and
813## rules for the user's tty, pty, home directories,
814## tmp, and tmpfs files.
815## </p>
816## </desc>
817## <param name="userdomain_prefix">
885b83ec 818## <summary>
8fd36732
CP
819## The prefix of the user domain (e.g., user
820## is the prefix for user_t).
885b83ec 821## </summary>
8fd36732 822## </param>
b16c6b8c 823#
847937da 824template(`userdom_login_user_template', `
b1a90365
CP
825 gen_require(`
826 class context contains;
827 ')
828
847937da 829 userdom_base_user_template($1)
563e58e8 830
3eaa9939
DW
831 userdom_manage_home_role($1_r, $1_usertype)
832
833 userdom_manage_tmp_role($1_r, $1_usertype)
834 userdom_manage_tmpfs_role($1_r, $1_usertype)
847937da 835
3eaa9939
DW
836 ifelse(`$1',`unconfined',`',`
837 gen_tunable(allow_$1_exec_content, true)
847937da 838
3eaa9939
DW
839 tunable_policy(`allow_$1_exec_content',`
840 userdom_exec_user_tmp_files($1_usertype)
841 userdom_exec_user_home_content_files($1_usertype)
842 ')
843 tunable_policy(`allow_$1_exec_content && use_nfs_home_dirs',`
844 fs_exec_nfs_files($1_usertype)
845 ')
846
847 tunable_policy(`allow_$1_exec_content && use_samba_home_dirs',`
848 fs_exec_cifs_files($1_usertype)
849 ')
850 ')
847937da
CP
851
852 userdom_change_password_template($1)
563e58e8 853
0c73cd25
CP
854 ##############################
855 #
847937da 856 # User domain Local policy
0c73cd25 857 #
b16c6b8c 858
847937da
CP
859 allow $1_t self:capability { setgid chown fowner };
860 dontaudit $1_t self:capability { sys_nice fsetid };
861
862 allow $1_t self:process ~{ setcurrent setexec setrlimit execmem execstack execheap };
863 dontaudit $1_t self:process setrlimit;
864 dontaudit $1_t self:netlink_route_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown nlmsg_read nlmsg_write };
865
866 allow $1_t self:context contains;
867
3eaa9939
DW
868 kernel_dontaudit_read_system_state($1_usertype)
869 kernel_dontaudit_list_all_proc($1_usertype)
847937da 870
3eaa9939
DW
871 dev_read_sysfs($1_usertype)
872 dev_read_urand($1_usertype)
847937da 873
3eaa9939 874 domain_use_interactive_fds($1_usertype)
847937da 875 # Command completion can fire hundreds of denials
3eaa9939 876 domain_dontaudit_exec_all_entry_files($1_usertype)
847937da 877
3eaa9939
DW
878 files_dontaudit_list_default($1_usertype)
879 files_dontaudit_read_default_files($1_usertype)
847937da 880 # Stat lost+found.
3eaa9939 881 files_getattr_lost_found_dirs($1_usertype)
847937da 882
3eaa9939
DW
883 fs_get_all_fs_quotas($1_usertype)
884 fs_getattr_all_fs($1_usertype)
885 fs_search_all($1_usertype)
886 fs_list_inotifyfs($1_usertype)
887 fs_rw_anon_inodefs_files($1_usertype)
847937da
CP
888
889 auth_dontaudit_write_login_records($1_t)
3eaa9939 890 auth_rw_cache($1_t)
847937da 891
847937da 892 # Stop warnings about access to /dev/console
3eaa9939
DW
893 init_dontaudit_use_fds($1_usertype)
894 init_dontaudit_use_script_fds($1_usertype)
847937da 895
3eaa9939 896 libs_exec_lib_files($1_usertype)
847937da 897
3eaa9939 898 logging_dontaudit_getattr_all_logs($1_usertype)
847937da 899
847937da 900 # for running TeX programs
3eaa9939
DW
901 miscfiles_read_tetex_data($1_usertype)
902 miscfiles_exec_tetex_data($1_usertype)
903
904 seutil_read_config($1_usertype)
847937da 905
3eaa9939
DW
906 optional_policy(`
907 cups_read_config($1_usertype)
908 cups_stream_connect($1_usertype)
909 cups_stream_connect_ptal($1_usertype)
910 ')
847937da
CP
911
912 optional_policy(`
3eaa9939
DW
913 kerberos_use($1_usertype)
914 kerberos_connect_524($1_usertype)
847937da
CP
915 ')
916
917 optional_policy(`
3eaa9939 918 mta_dontaudit_read_spool_symlinks($1_usertype)
847937da
CP
919 ')
920
921 optional_policy(`
3eaa9939 922 quota_dontaudit_getattr_db($1_usertype)
847937da
CP
923 ')
924
925 optional_policy(`
3eaa9939
DW
926 rpm_read_db($1_usertype)
927 rpm_dontaudit_manage_db($1_usertype)
928 rpm_read_cache($1_usertype)
847937da
CP
929 ')
930
931 optional_policy(`
3eaa9939 932 oddjob_run_mkhomedir($1_t, $1_r)
847937da
CP
933 ')
934')
935
936#######################################
937## <summary>
938## The template for creating a unprivileged login user.
939## </summary>
940## <desc>
941## <p>
942## This template creates a user domain, types, and
943## rules for the user's tty, pty, home directories,
944## tmp, and tmpfs files.
945## </p>
946## </desc>
947## <param name="userdomain_prefix">
948## <summary>
949## The prefix of the user domain (e.g., user
950## is the prefix for user_t).
951## </summary>
952## </param>
953#
954template(`userdom_restricted_user_template',`
955 gen_require(`
956 attribute unpriv_userdomain;
847937da
CP
957 ')
958
959 userdom_login_user_template($1)
b16c6b8c 960
0f707d52 961 typeattribute $1_t unpriv_userdomain;
15722ec9 962 domain_interactive_fd($1_t)
b16c6b8c 963
3eaa9939
DW
964 allow $1_usertype self:netlink_kobject_uevent_socket create_socket_perms;
965 dontaudit $1_usertype self:netlink_audit_socket create_socket_perms;
966
0c73cd25
CP
967 ##############################
968 #
969 # Local policy
970 #
971
847937da 972 optional_policy(`
296273a7 973 loadkeys_run($1_t,$1_r)
847937da
CP
974 ')
975')
976
977#######################################
978## <summary>
979## The template for creating a unprivileged xwindows login user.
980## </summary>
981## <desc>
982## <p>
983## The template for creating a unprivileged xwindows login user.
984## </p>
985## <p>
986## This template creates a user domain, types, and
987## rules for the user's tty, pty, home directories,
988## tmp, and tmpfs files.
989## </p>
990## </desc>
991## <param name="userdomain_prefix">
992## <summary>
993## The prefix of the user domain (e.g., user
994## is the prefix for user_t).
995## </summary>
996## </param>
997#
998template(`userdom_restricted_xwindows_user_template',`
999
1000 userdom_restricted_user_template($1)
1001
847937da
CP
1002 ##############################
1003 #
1004 # Local policy
1005 #
1006
296273a7 1007 auth_role($1_r, $1_t)
3eaa9939 1008 auth_search_pam_console_data($1_usertype)
847937da 1009
3eaa9939
DW
1010 dev_read_sound($1_usertype)
1011 dev_write_sound($1_usertype)
847937da 1012 # gnome keyring wants to read this.
3eaa9939
DW
1013 dev_dontaudit_read_rand($1_usertype)
1014 # temporarily allow since openoffice requires this
1015 dev_read_rand($1_usertype)
847937da 1016
3eaa9939
DW
1017 dev_read_video_dev($1_usertype)
1018 dev_write_video_dev($1_usertype)
1019 dev_rw_wireless($1_usertype)
1020
1021 tunable_policy(`user_rw_noexattrfile',`
1022 dev_rw_usbfs($1_t)
1023 dev_rw_generic_usb_dev($1_usertype)
1024
1025 fs_manage_noxattr_fs_files($1_usertype)
1026 fs_manage_noxattr_fs_dirs($1_usertype)
1027 fs_manage_dos_dirs($1_usertype)
1028 fs_manage_dos_files($1_usertype)
1029 storage_raw_read_removable_device($1_usertype)
1030 storage_raw_write_removable_device($1_usertype)
1031 ')
1032
1033 logging_send_syslog_msg($1_usertype)
847937da
CP
1034 logging_dontaudit_send_audit_msgs($1_t)
1035
1036 # Need to to this just so screensaver will work. Should be moved to screensaver domain
1037 logging_send_audit_msgs($1_t)
1038 selinux_get_enforce_mode($1_t)
3eaa9939
DW
1039 seutil_exec_restorecond($1_t)
1040 seutil_read_file_contexts($1_t)
1041 seutil_read_default_contexts($1_t)
847937da 1042
93c49bdb
CP
1043 xserver_restricted_role($1_r, $1_t)
1044
847937da 1045 optional_policy(`
3eaa9939 1046 alsa_read_rw_config($1_usertype)
847937da
CP
1047 ')
1048
1049 optional_policy(`
3eaa9939
DW
1050 dbus_role_template($1, $1_r, $1_usertype)
1051 dbus_system_bus_client($1_usertype)
1052 allow $1_usertype $1_usertype:dbus send_msg;
1053
1054 optional_policy(`
1055 abrt_dbus_chat($1_usertype)
1056 abrt_run_helper($1_usertype, $1_r)
1057 ')
1058
1059 optional_policy(`
1060 consolekit_dbus_chat($1_usertype)
1061 ')
1062
1063 optional_policy(`
1064 cups_dbus_chat($1_usertype)
1065 cups_dbus_chat_config($1_usertype)
1066 ')
847937da
CP
1067
1068 optional_policy(`
3eaa9939
DW
1069 devicekit_dbus_chat($1_usertype)
1070 devicekit_dbus_chat_disk($1_usertype)
1071 devicekit_dbus_chat_power($1_usertype)
847937da
CP
1072 ')
1073
1074 optional_policy(`
3eaa9939 1075 fprintd_dbus_chat($1_t)
847937da
CP
1076 ')
1077 ')
1078
1079 optional_policy(`
3eaa9939
DW
1080 openoffice_role_template($1, $1_r, $1_usertype)
1081 ')
1082
1083 optional_policy(`
1084 policykit_role($1_r, $1_usertype)
1085 ')
1086
1087 optional_policy(`
1088 pulseaudio_role($1_r, $1_usertype)
1089 ')
1090
1091 optional_policy(`
1092 rtkit_scheduled($1_usertype)
847937da
CP
1093 ')
1094
847937da
CP
1095 optional_policy(`
1096 setroubleshoot_dontaudit_stream_connect($1_t)
3eaa9939
DW
1097 ')
1098
1099 optional_policy(`
1100 udev_read_db($1_usertype)
1101 ')
1102
1103 optional_policy(`
1104 wm_role_template($1, $1_r, $1_t)
847937da
CP
1105 ')
1106')
1107
1108#######################################
1109## <summary>
1110## The template for creating a unprivileged user roughly
1111## equivalent to a regular linux user.
1112## </summary>
1113## <desc>
1114## <p>
1115## The template for creating a unprivileged user roughly
1116## equivalent to a regular linux user.
1117## </p>
1118## <p>
1119## This template creates a user domain, types, and
1120## rules for the user's tty, pty, home directories,
1121## tmp, and tmpfs files.
1122## </p>
1123## </desc>
1124## <param name="userdomain_prefix">
1125## <summary>
1126## The prefix of the user domain (e.g., user
1127## is the prefix for user_t).
1128## </summary>
1129## </param>
1130#
1131template(`userdom_unpriv_user_template', `
1132
1133 ##############################
1134 #
1135 # Declarations
1136 #
1137
1138 # Inherit rules for ordinary users.
3eaa9939 1139 userdom_restricted_xwindows_user_template($1)
847937da
CP
1140 userdom_common_user_template($1)
1141
1142 ##############################
1143 #
1144 # Local policy
1145 #
0c73cd25
CP
1146
1147 # port access is audited even if dac would not have allowed it, so dontaudit it here
3eaa9939 1148# corenet_dontaudit_tcp_bind_all_reserved_ports($1_t)
bbcd3c97
CP
1149 # Need the following rule to allow users to run vpnc
1150 corenet_tcp_bind_xserver_port($1_t)
3eaa9939 1151 corenet_tcp_bind_all_nodes($1_usertype)
0c73cd25 1152
3eaa9939 1153 storage_rw_fuse($1_t)
a1fcff33 1154
3eaa9939 1155 miscfiles_read_hwdata($1_usertype)
0c73cd25
CP
1156
1157 # Allow users to run TCP servers (bind to ports and accept connection from
6073ea1e 1158 # the same domain and outside users) disabling this forces FTP passive mode
0c73cd25 1159 # and may change other protocols
34c8fabe 1160 tunable_policy(`user_tcp_server',`
3eaa9939
DW
1161 corenet_tcp_bind_all_unreserved_ports($1_usertype)
1162 ')
1163
1164 tunable_policy(`user_setrlimit',`
1165 allow $1_usertype self:process setrlimit;
34c8fabe 1166 ')
0c73cd25 1167
bb7170f6 1168 optional_policy(`
3eaa9939
DW
1169 cdrecord_role($1_r, $1_t)
1170 ')
1171
1172 optional_policy(`
1173 cron_role($1_r, $1_t)
1174 ')
1175
1176 optional_policy(`
1177 games_rw_data($1_usertype)
1178 ')
1179
1180 optional_policy(`
1181 gpg_role($1_r, $1_usertype)
1182 ')
1183
1184 optional_policy(`
1185 gnomeclock_dbus_chat($1_t)
1186 ')
1187
1188 optional_policy(`
1189 gpm_stream_connect($1_usertype)
1190 ')
1191
1192 optional_policy(`
1193 execmem_role_template($1, $1_r, $1_t)
1194 ')
1195
1196 optional_policy(`
1197 java_role_template($1, $1_r, $1_t)
1198 ')
1199
1200 optional_policy(`
1201 mono_role_template($1, $1_r, $1_t)
1202 ')
1203
1204 optional_policy(`
1205 mount_run_fusermount($1_t, $1_r)
1206 ')
1207
1208 optional_policy(`
1209 wine_role_template($1, $1_r, $1_t)
1f91e1bf
CP
1210 ')
1211
bb7170f6 1212 optional_policy(`
3eaa9939 1213 postfix_run_postdrop($1_t, $1_r)
e08118a5
CP
1214 ')
1215
3eaa9939 1216 # Run pppd in pppd_t by default for user
6b19be33 1217 optional_policy(`
3eaa9939 1218 ppp_run_cond($1_t, $1_r)
6b19be33 1219 ')
b16c6b8c 1220')
4d8ddf9a 1221
8fd36732
CP
1222#######################################
1223## <summary>
1224## The template for creating an administrative user.
1225## </summary>
1226## <desc>
1227## <p>
1228## This template creates a user domain, types, and
1229## rules for the user's tty, pty, home directories,
1230## tmp, and tmpfs files.
1231## </p>
2ec4c9d3 1232## <p>
8fd36732
CP
1233## The privileges given to administrative users are:
1234## <ul>
1235## <li>Raw disk access</li>
1236## <li>Set all sysctls</li>
1237## <li>All kernel ring buffer controls</li>
8fd36732
CP
1238## <li>Create, read, write, and delete all files but shadow</li>
1239## <li>Manage source and binary format SELinux policy</li>
1240## <li>Run insmod</li>
1241## </ul>
2ec4c9d3
CP
1242## </p>
1243## </desc>
8fd36732 1244## <param name="userdomain_prefix">
885b83ec 1245## <summary>
8fd36732
CP
1246## The prefix of the user domain (e.g., sysadm
1247## is the prefix for sysadm_t).
885b83ec 1248## </summary>
8fd36732 1249## </param>
4d8ddf9a 1250#
bbcd3c97 1251template(`userdom_admin_user_template',`
142e9f40 1252 gen_require(`
0be901ba 1253 attribute admindomain;
3eaa9939 1254 class passwd { passwd chfn chsh rootok crontab };
142e9f40
CP
1255 ')
1256
0c73cd25
CP
1257 ##############################
1258 #
1259 # Declarations
1260 #
1261
1262 # Inherit rules for ordinary users.
847937da 1263 userdom_login_user_template($1)
bbcd3c97 1264 userdom_common_user_template($1)
0c73cd25 1265
1815bad1 1266 domain_obj_id_change_exemption($1_t)
0c73cd25
CP
1267 role system_r types $1_t;
1268
0be901ba 1269 typeattribute $1_t admindomain;
bd75703c 1270
142e9f40 1271 ifdef(`direct_sysadm_daemon',`
1815bad1 1272 domain_system_change_exemption($1_t)
142e9f40 1273 ')
2a98379a 1274
0c73cd25
CP
1275 ##############################
1276 #
1277 # $1_t local policy
1278 #
1279
847937da 1280 allow $1_t self:capability ~{ sys_module audit_control audit_write };
0c73cd25 1281 allow $1_t self:process { setexec setfscreate };
bd75703c
CP
1282 allow $1_t self:netlink_audit_socket nlmsg_readpriv;
1283 allow $1_t self:tun_socket create;
0c73cd25
CP
1284 # Set password information for other users.
1285 allow $1_t self:passwd { passwd chfn chsh };
0c73cd25
CP
1286 # Skip authentication when pam_rootok is specified.
1287 allow $1_t self:passwd rootok;
1288
3eaa9939
DW
1289 # Manipulate other users crontab.
1290 allow $1_t self:passwd crontab;
1291
0c73cd25 1292 kernel_read_software_raid_state($1_t)
445522dc 1293 kernel_getattr_core_if($1_t)
0fd9dc55 1294 kernel_getattr_message_if($1_t)
0c73cd25
CP
1295 kernel_change_ring_buffer_level($1_t)
1296 kernel_clear_ring_buffer($1_t)
1297 kernel_read_ring_buffer($1_t)
1298 kernel_get_sysvipc_info($1_t)
445522dc 1299 kernel_rw_all_sysctls($1_t)
8fd36732
CP
1300 # signal unlabeled processes:
1301 kernel_kill_unlabeled($1_t)
1302 kernel_signal_unlabeled($1_t)
1303 kernel_sigstop_unlabeled($1_t)
1304 kernel_signull_unlabeled($1_t)
1305 kernel_sigchld_unlabeled($1_t)
3eaa9939 1306 kernel_signal($1_t)
2ec4c9d3
CP
1307
1308 corenet_tcp_bind_generic_port($1_t)
1309 # allow setting up tunnels
5b6ddb98 1310 corenet_rw_tun_tap_dev($1_t)
2ec4c9d3 1311
207c4763
CP
1312 dev_getattr_generic_blk_files($1_t)
1313 dev_getattr_generic_chr_files($1_t)
bbcd3c97
CP
1314 # for lsof
1315 dev_getattr_mtrr_dev($1_t)
1316 # Allow MAKEDEV to work
1317 dev_create_all_blk_files($1_t)
1318 dev_create_all_chr_files($1_t)
1319 dev_delete_all_blk_files($1_t)
1320 dev_delete_all_chr_files($1_t)
1321 dev_rename_all_blk_files($1_t)
1322 dev_rename_all_chr_files($1_t)
1323 dev_create_generic_symlinks($1_t)
0c73cd25 1324
c9428d33
CP
1325 domain_setpriority_all_domains($1_t)
1326 domain_read_all_domains_state($1_t)
ccc59782
CP
1327 domain_getattr_all_domains($1_t)
1328 domain_dontaudit_ptrace_all_domains($1_t)
0c73cd25
CP
1329 # signal all domains:
1330 domain_kill_all_domains($1_t)
1331 domain_signal_all_domains($1_t)
1332 domain_signull_all_domains($1_t)
1333 domain_sigstop_all_domains($1_t)
1334 domain_sigstop_all_domains($1_t)
1335 domain_sigchld_all_domains($1_t)
2ec4c9d3
CP
1336 # for lsof
1337 domain_getattr_all_sockets($1_t)
3eaa9939 1338 domain_dontaudit_getattr_all_sockets($1_t)
0c73cd25 1339
99505c1c 1340 files_exec_usr_src_files($1_t)
0c73cd25 1341
bbcd3c97 1342 fs_getattr_all_fs($1_t)
3eaa9939
DW
1343 fs_getattr_all_files($1_t)
1344 fs_list_all($1_t)
bbcd3c97
CP
1345 fs_set_all_quotas($1_t)
1346 fs_exec_noxattr($1_t)
1347
1348 storage_raw_read_removable_device($1_t)
1349 storage_raw_write_removable_device($1_t)
1350
1351 term_use_all_terms($1_t)
1352
1353 auth_getattr_shadow($1_t)
1354 # Manage almost all files
1355 auth_manage_all_files_except_shadow($1_t)
1356 # Relabel almost all files
1357 auth_relabel_all_files_except_shadow($1_t)
1358
1359 init_telinit($1_t)
0c73cd25 1360
c9428d33 1361 logging_send_syslog_msg($1_t)
0c73cd25 1362
c9428d33 1363 modutils_domtrans_insmod($1_t)
3eaa9939 1364 modutils_domtrans_depmod($1_t)
0c73cd25 1365
0c73cd25
CP
1366 # The following rule is temporary until such time that a complete
1367 # policy management infrastructure is in place so that an administrator
1368 # cannot directly manipulate policy files with arbitrary programs.
1815bad1 1369 seutil_manage_src_policy($1_t)
0c73cd25
CP
1370 # Violates the goal of limiting write access to checkpolicy.
1371 # But presently necessary for installing the file_contexts file.
1815bad1 1372 seutil_manage_bin_policy($1_t)
0c73cd25 1373
296273a7
CP
1374 userdom_manage_user_home_content_dirs($1_t)
1375 userdom_manage_user_home_content_files($1_t)
1376 userdom_manage_user_home_content_symlinks($1_t)
1377 userdom_manage_user_home_content_pipes($1_t)
1378 userdom_manage_user_home_content_sockets($1_t)
1379 userdom_user_home_dir_filetrans_user_home_content($1_t, { dir file lnk_file fifo_file sock_file })
1380
bbcd3c97
CP
1381 tunable_policy(`user_rw_noexattrfile',`
1382 fs_manage_noxattr_fs_files($1_t)
1383 fs_manage_noxattr_fs_dirs($1_t)
1384 ',`
1385 fs_read_noxattr_fs_files($1_t)
1386 ')
1387
e8cb08ae
CP
1388 optional_policy(`
1389 postgresql_unconfined($1_t)
1390 ')
1391
6b19be33
CP
1392 optional_policy(`
1393 userhelper_exec($1_t)
1394 ')
1395')
1396
1397########################################
1398## <summary>
1399## Allow user to run as a secadm
1400## </summary>
1401## <desc>
1402## <p>
1403## Create objects in a user home directory
1404## with an automatic type transition to
1405## a specified private type.
1406## </p>
1407## <p>
1408## This is a templated interface, and should only
1409## be called from a per-userdomain template.
1410## </p>
1411## </desc>
6b19be33
CP
1412## <param name="domain">
1413## <summary>
1414## Domain allowed access.
1415## </summary>
1416## </param>
1417## <param name="role">
1418## <summary>
1419## The role of the object to create.
1420## </summary>
1421## </param>
6b19be33
CP
1422#
1423template(`userdom_security_admin_template',`
1424 allow $1 self:capability { dac_read_search dac_override };
1425
1426 corecmd_exec_shell($1)
1427
1428 domain_obj_id_change_exemption($1)
1429
1430 dev_relabel_all_dev_nodes($1)
1431
1432 files_create_boot_flag($1)
3eaa9939
DW
1433 files_create_default_dir($1)
1434 files_root_filetrans_default($1, dir)
6b19be33
CP
1435
1436 # Necessary for managing /boot/efi
1437 fs_manage_dos_files($1)
1438
1439 mls_process_read_up($1)
f8233ab7 1440 mls_file_read_all_levels($1)
6b19be33
CP
1441 mls_file_upgrade($1)
1442 mls_file_downgrade($1)
1443
1444 selinux_set_enforce_mode($1)
f0435b1a 1445 selinux_set_all_booleans($1)
6b19be33
CP
1446 selinux_set_parameters($1)
1447
1448 auth_relabel_all_files_except_shadow($1)
1449 auth_relabel_shadow($1)
1450
1451 init_exec($1)
1452
1453 logging_send_syslog_msg($1)
1454 logging_read_audit_log($1)
1455 logging_read_generic_logs($1)
1456 logging_read_audit_config($1)
1457
1458 seutil_manage_bin_policy($1)
296273a7
CP
1459 seutil_run_checkpolicy($1,$2)
1460 seutil_run_loadpolicy($1,$2)
1461 seutil_run_semanage($1,$2)
3eaa9939 1462 seutil_run_setsebool($1,$2)
296273a7 1463 seutil_run_setfiles($1, $2)
6b19be33
CP
1464
1465 optional_policy(`
296273a7 1466 aide_run($1,$2)
6b19be33
CP
1467 ')
1468
1469 optional_policy(`
1470 consoletype_exec($1)
1471 ')
1472
1473 optional_policy(`
1474 dmesg_exec($1)
1475 ')
1476
9e8f65c8 1477 optional_policy(`
296273a7 1478 ipsec_run_setkey($1,$2)
9e8f65c8
CP
1479 ')
1480
6b19be33 1481 optional_policy(`
296273a7 1482 netlabel_run_mgmt($1,$2)
a1fcff33 1483 ')
4d8ddf9a 1484')
490639cd 1485
b1bf2f78
CP
1486########################################
1487## <summary>
296273a7
CP
1488## Make the specified type usable in a
1489## user home directory.
b1bf2f78 1490## </summary>
296273a7 1491## <param name="type">
b1bf2f78 1492## <summary>
296273a7
CP
1493## Type to be used as a file in the
1494## user home directory.
b1bf2f78
CP
1495## </summary>
1496## </param>
b1bf2f78 1497#
296273a7
CP
1498interface(`userdom_user_home_content',`
1499 gen_require(`
1500 type user_home_t;
3eaa9939 1501 attribute user_home_type;
296273a7
CP
1502 ')
1503
1504 allow $1 user_home_t:filesystem associate;
1505 files_type($1)
1506 ubac_constrained($1)
3eaa9939
DW
1507
1508 files_poly_member($1)
1509 typeattribute $1 user_home_type;
b1bf2f78
CP
1510')
1511
bd75703c
CP
1512########################################
1513## <summary>
1514## Allow domain to attach to TUN devices created by administrative users.
1515## </summary>
1516## <param name="domain">
1517## <summary>
1518## Domain allowed access.
1519## </summary>
1520## </param>
1521#
1522interface(`userdom_attach_admin_tun_iface',`
1523 gen_require(`
0be901ba 1524 attribute admindomain;
bd75703c
CP
1525 ')
1526
0be901ba 1527 allow $1 admindomain:tun_socket relabelfrom;
bd75703c
CP
1528 allow $1 self:tun_socket relabelto;
1529')
1530
b1bf2f78
CP
1531########################################
1532## <summary>
296273a7 1533## Set the attributes of a user pty.
b1bf2f78 1534## </summary>
296273a7 1535## <param name="domain">
b1bf2f78 1536## <summary>
296273a7 1537## Domain allowed access.
b1bf2f78
CP
1538## </summary>
1539## </param>
b1bf2f78 1540#
296273a7
CP
1541interface(`userdom_setattr_user_ptys',`
1542 gen_require(`
1543 type user_devpts_t;
1544 ')
1545
bf530f53 1546 allow $1 user_devpts_t:chr_file setattr_chr_file_perms;
b1bf2f78
CP
1547')
1548
1549########################################
1550## <summary>
296273a7 1551## Create a user pty.
b1bf2f78 1552## </summary>
296273a7 1553## <param name="domain">
b1bf2f78 1554## <summary>
296273a7 1555## Domain allowed access.
b1bf2f78
CP
1556## </summary>
1557## </param>
b1bf2f78 1558#
296273a7
CP
1559interface(`userdom_create_user_pty',`
1560 gen_require(`
1561 type user_devpts_t;
1562 ')
1563
1564 term_create_pty($1, user_devpts_t)
b1bf2f78
CP
1565')
1566
1567########################################
1568## <summary>
296273a7 1569## Get the attributes of user home directories.
b1bf2f78 1570## </summary>
296273a7 1571## <param name="domain">
b1bf2f78 1572## <summary>
296273a7 1573## Domain allowed access.
b1bf2f78
CP
1574## </summary>
1575## </param>
b1bf2f78 1576#
296273a7
CP
1577interface(`userdom_getattr_user_home_dirs',`
1578 gen_require(`
1579 type user_home_dir_t;
1580 ')
1581
1582 allow $1 user_home_dir_t:dir getattr_dir_perms;
1583 files_search_home($1)
b1bf2f78
CP
1584')
1585
1586########################################
1587## <summary>
296273a7 1588## Do not audit attempts to get the attributes of user home directories.
b1bf2f78 1589## </summary>
296273a7 1590## <param name="domain">
b1bf2f78 1591## <summary>
a0546c9d 1592## Domain to not audit.
b1bf2f78
CP
1593## </summary>
1594## </param>
b1bf2f78 1595#
296273a7
CP
1596interface(`userdom_dontaudit_getattr_user_home_dirs',`
1597 gen_require(`
1598 type user_home_dir_t;
1599 ')
1600
1601 dontaudit $1 user_home_dir_t:dir getattr_dir_perms;
b1bf2f78
CP
1602')
1603
1604########################################
1605## <summary>
296273a7 1606## Search user home directories.
b1bf2f78 1607## </summary>
296273a7 1608## <param name="domain">
b1bf2f78 1609## <summary>
296273a7 1610## Domain allowed access.
b1bf2f78
CP
1611## </summary>
1612## </param>
b1bf2f78 1613#
296273a7
CP
1614interface(`userdom_search_user_home_dirs',`
1615 gen_require(`
1616 type user_home_dir_t;
1617 ')
1618
1619 allow $1 user_home_dir_t:dir search_dir_perms;
3eaa9939 1620 allow $1 user_home_dir_t:lnk_file read_lnk_file_perms;
296273a7 1621 files_search_home($1)
b1bf2f78
CP
1622')
1623
1624########################################
1625## <summary>
c46376e6 1626## Do not audit attempts to search user home directories.
b1bf2f78 1627## </summary>
c46376e6
CP
1628## <desc>
1629## <p>
1630## Do not audit attempts to search user home directories.
1631## This will supress SELinux denial messages when the specified
1632## domain is denied the permission to search these directories.
1633## </p>
1634## </desc>
296273a7 1635## <param name="domain">
b1bf2f78 1636## <summary>
c46376e6 1637## Domain to not audit.
b1bf2f78
CP
1638## </summary>
1639## </param>
c46376e6 1640## <infoflow type="none"/>
b1bf2f78 1641#
296273a7
CP
1642interface(`userdom_dontaudit_search_user_home_dirs',`
1643 gen_require(`
1644 type user_home_dir_t;
1645 ')
1646
1647 dontaudit $1 user_home_dir_t:dir search_dir_perms;
b1bf2f78
CP
1648')
1649
1650########################################
1651## <summary>
ff8f0a63 1652## List user home directories.
b1bf2f78 1653## </summary>
296273a7 1654## <param name="domain">
b1bf2f78 1655## <summary>
ff8f0a63 1656## Domain allowed access.
b1bf2f78
CP
1657## </summary>
1658## </param>
b1bf2f78 1659#
296273a7
CP
1660interface(`userdom_list_user_home_dirs',`
1661 gen_require(`
1662 type user_home_dir_t;
1663 ')
b1bf2f78 1664
296273a7
CP
1665 allow $1 user_home_dir_t:dir list_dir_perms;
1666 files_search_home($1)
3eaa9939
DW
1667
1668 tunable_policy(`use_nfs_home_dirs',`
1669 fs_list_nfs($1)
1670 ')
1671
1672 tunable_policy(`use_samba_home_dirs',`
1673 fs_list_cifs($1)
1674 ')
de8af9dc
CP
1675')
1676
7c2f5a82
CP
1677########################################
1678## <summary>
296273a7 1679## Do not audit attempts to list user home subdirectories.
7c2f5a82
CP
1680## </summary>
1681## <param name="domain">
885b83ec 1682## <summary>
a7ee7f81 1683## Domain to not audit.
885b83ec 1684## </summary>
7c2f5a82
CP
1685## </param>
1686#
296273a7 1687interface(`userdom_dontaudit_list_user_home_dirs',`
7c2f5a82 1688 gen_require(`
296273a7 1689 type user_home_dir_t;
3eaa9939 1690 type user_home_t;
7c2f5a82
CP
1691 ')
1692
296273a7 1693 dontaudit $1 user_home_dir_t:dir list_dir_perms;
3eaa9939 1694 dontaudit $1 user_home_t:dir list_dir_perms;
7c2f5a82
CP
1695')
1696
1697########################################
1698## <summary>
296273a7 1699## Create user home directories.
7c2f5a82
CP
1700## </summary>
1701## <param name="domain">
885b83ec 1702## <summary>
7c2f5a82 1703## Domain allowed access.
885b83ec 1704## </summary>
7c2f5a82
CP
1705## </param>
1706#
296273a7
CP
1707interface(`userdom_create_user_home_dirs',`
1708 gen_require(`
1709 type user_home_dir_t;
1710 ')
1711
1712 allow $1 user_home_dir_t:dir create_dir_perms;
7c2f5a82
CP
1713')
1714
1715########################################
1716## <summary>
296273a7 1717## Create user home directories.
7c2f5a82
CP
1718## </summary>
1719## <param name="domain">
885b83ec 1720## <summary>
7c2f5a82 1721## Domain allowed access.
885b83ec 1722## </summary>
7c2f5a82
CP
1723## </param>
1724#
296273a7 1725interface(`userdom_manage_user_home_dirs',`
7c2f5a82 1726 gen_require(`
296273a7 1727 type user_home_dir_t;
7c2f5a82
CP
1728 ')
1729
296273a7 1730 allow $1 user_home_dir_t:dir manage_dir_perms;
7c2f5a82
CP
1731')
1732
d490eb6b 1733########################################
ab940a4c 1734## <summary>
296273a7 1735## Relabel to user home directories.
ab940a4c 1736## </summary>
414e4151 1737## <param name="domain">
885b83ec 1738## <summary>
725926c5 1739## Domain allowed access.
885b83ec 1740## </summary>
414e4151 1741## </param>
d490eb6b 1742#
296273a7
CP
1743interface(`userdom_relabelto_user_home_dirs',`
1744 gen_require(`
1745 type user_home_dir_t;
1746 ')
d490eb6b 1747
296273a7 1748 allow $1 user_home_dir_t:dir relabelto;
7c2f5a82
CP
1749')
1750
3eaa9939
DW
1751
1752########################################
1753## <summary>
1754## Relabel to user home files.
1755## </summary>
1756## <param name="domain">
1757## <summary>
1758## Domain allowed access.
1759## </summary>
1760## </param>
1761#
1762interface(`userdom_relabelto_user_home_files',`
1763 gen_require(`
1764 type user_home_t;
1765 ')
1766
1767 allow $1 user_home_t:file relabelto;
1768')
1769########################################
1770## <summary>
1771## Relabel user home files.
1772## </summary>
1773## <param name="domain">
1774## <summary>
1775## Domain allowed access.
1776## </summary>
1777## </param>
1778#
1779interface(`userdom_relabel_user_home_files',`
1780 gen_require(`
1781 type user_home_t;
1782 ')
1783
83029ff3 1784 allow $1 user_home_t:file relabel_file_perms;
3eaa9939
DW
1785')
1786
7c2f5a82
CP
1787########################################
1788## <summary>
296273a7
CP
1789## Create directories in the home dir root with
1790## the user home directory type.
7c2f5a82
CP
1791## </summary>
1792## <param name="domain">
885b83ec 1793## <summary>
7c2f5a82 1794## Domain allowed access.
885b83ec 1795## </summary>
7c2f5a82
CP
1796## </param>
1797#
296273a7
CP
1798interface(`userdom_home_filetrans_user_home_dir',`
1799 gen_require(`
1800 type user_home_dir_t;
1801 ')
7c2f5a82 1802
296273a7 1803 files_home_filetrans($1, user_home_dir_t, dir)
7c2f5a82
CP
1804')
1805
d42c7ede
CP
1806########################################
1807## <summary>
296273a7
CP
1808## Do a domain transition to the specified
1809## domain when executing a program in the
1810## user home directory.
d42c7ede
CP
1811## </summary>
1812## <desc>
1813## <p>
296273a7
CP
1814## Do a domain transition to the specified
1815## domain when executing a program in the
1816## user home directory.
d42c7ede
CP
1817## </p>
1818## <p>
296273a7
CP
1819## No interprocess communication (signals, pipes,
1820## etc.) is provided by this interface since
1821## the domains are not owned by this module.
d42c7ede
CP
1822## </p>
1823## </desc>
296273a7 1824## <param name="source_domain">
d42c7ede 1825## <summary>
a0546c9d 1826## Domain allowed to transition.
d42c7ede
CP
1827## </summary>
1828## </param>
296273a7 1829## <param name="target_domain">
d42c7ede 1830## <summary>
296273a7 1831## Domain to transition to.
d42c7ede
CP
1832## </summary>
1833## </param>
1834#
296273a7
CP
1835interface(`userdom_user_home_domtrans',`
1836 gen_require(`
1837 type user_home_dir_t, user_home_t;
1838 ')
d42c7ede 1839
296273a7
CP
1840 domain_auto_trans($1, user_home_t, $2)
1841 allow $1 user_home_dir_t:dir search_dir_perms;
1842 files_search_home($1)
d42c7ede
CP
1843')
1844
ae9e2716
CP
1845########################################
1846## <summary>
296273a7 1847## Do not audit attempts to search user home content directories.
ae9e2716
CP
1848## </summary>
1849## <param name="domain">
885b83ec 1850## <summary>
a7ee7f81 1851## Domain to not audit.
885b83ec 1852## </summary>
ae9e2716
CP
1853## </param>
1854#
296273a7
CP
1855interface(`userdom_dontaudit_search_user_home_content',`
1856 gen_require(`
1857 type user_home_t;
1858 ')
ae9e2716 1859
296273a7 1860 dontaudit $1 user_home_t:dir search_dir_perms;
3eaa9939
DW
1861 fs_dontaudit_list_nfs($1)
1862 fs_dontaudit_list_cifs($1)
ae9e2716
CP
1863')
1864
2d743657
CP
1865########################################
1866## <summary>
1867## List contents of users home directory.
1868## </summary>
1869## <param name="domain">
1870## <summary>
1871## Domain allowed access.
1872## </summary>
1873## </param>
1874#
1875interface(`userdom_list_user_home_content',`
1876 gen_require(`
3eaa9939
DW
1877 type user_home_dir_t;
1878 attribute user_home_type;
2d743657
CP
1879 ')
1880
3eaa9939
DW
1881 files_list_home($1)
1882 allow $1 { user_home_dir_t user_home_type }:dir list_dir_perms;
2d743657
CP
1883')
1884
cdc86ee5
CP
1885########################################
1886## <summary>
296273a7
CP
1887## Create, read, write, and delete directories
1888## in a user home subdirectory.
cdc86ee5
CP
1889## </summary>
1890## <param name="domain">
1891## <summary>
1892## Domain allowed access.
1893## </summary>
1894## </param>
1895#
296273a7
CP
1896interface(`userdom_manage_user_home_content_dirs',`
1897 gen_require(`
1898 type user_home_dir_t, user_home_t;
1899 ')
1900
1901 manage_dirs_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
1902 files_search_home($1)
cdc86ee5
CP
1903')
1904
4083191c
CP
1905########################################
1906## <summary>
1907## Delete directories in a user home subdirectory.
1908## </summary>
1909## <param name="domain">
1910## <summary>
1911## Domain allowed access.
1912## </summary>
1913## </param>
1914#
1915interface(`userdom_delete_user_home_content_dirs',`
1916 gen_require(`
1917 type user_home_t;
1918 ')
1919
1920 allow $1 user_home_t:dir delete_dir_perms;
1921')
1922
3eaa9939
DW
1923########################################
1924## <summary>
1925## Set the attributes of user home files.
1926## </summary>
1927## <param name="domain">
1928## <summary>
1929## Domain allowed access.
1930## </summary>
1931## </param>
1932## <rolecap/>
1933#
1934interface(`userdom_setattr_user_home_content_files',`
1935 gen_require(`
1936 type user_home_t;
1937 ')
1938
1939 allow $1 user_home_t:file setattr;
1940')
1941
d6d16b97
CP
1942########################################
1943## <summary>
296273a7
CP
1944## Do not audit attempts to set the
1945## attributes of user home files.
d6d16b97
CP
1946## </summary>
1947## <param name="domain">
1948## <summary>
a0546c9d 1949## Domain to not audit.
d6d16b97
CP
1950## </summary>
1951## </param>
1952#
296273a7
CP
1953interface(`userdom_dontaudit_setattr_user_home_content_files',`
1954 gen_require(`
1955 type user_home_t;
1956 ')
d6d16b97 1957
bf530f53 1958 dontaudit $1 user_home_t:file setattr_file_perms;
b0d2243c
CP
1959')
1960
fd89e19f
CP
1961########################################
1962## <summary>
296273a7 1963## Mmap user home files.
fd89e19f
CP
1964## </summary>
1965## <param name="domain">
885b83ec 1966## <summary>
725926c5 1967## Domain allowed access.
885b83ec 1968## </summary>
fd89e19f
CP
1969## </param>
1970#
296273a7
CP
1971interface(`userdom_mmap_user_home_content_files',`
1972 gen_require(`
1973 type user_home_dir_t, user_home_t;
1974 ')
fd89e19f 1975
296273a7
CP
1976 mmap_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
1977 files_search_home($1)
1f91e1bf
CP
1978')
1979
725926c5
CP
1980########################################
1981## <summary>
296273a7 1982## Read user home files.
725926c5
CP
1983## </summary>
1984## <param name="domain">
885b83ec 1985## <summary>
725926c5 1986## Domain allowed access.
885b83ec 1987## </summary>
725926c5
CP
1988## </param>
1989#
296273a7
CP
1990interface(`userdom_read_user_home_content_files',`
1991 gen_require(`
1992 type user_home_dir_t, user_home_t;
1993 ')
1994
3eaa9939 1995 list_dirs_pattern($1, { user_home_dir_t user_home_t }, { user_home_dir_t user_home_t })
296273a7
CP
1996 read_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
1997 files_search_home($1)
725926c5
CP
1998')
1999
daa0e0b0 2000########################################
ab940a4c 2001## <summary>
3eaa9939 2002## Do not audit attempts to getattr user home files.
ab940a4c 2003## </summary>
414e4151 2004## <param name="domain">
885b83ec 2005## <summary>
296273a7 2006## Domain to not audit.
885b83ec 2007## </summary>
414e4151 2008## </param>
490639cd 2009#
3eaa9939 2010interface(`userdom_dontaudit_getattr_user_home_content',`
296273a7 2011 gen_require(`
3eaa9939 2012 attribute user_home_type;
296273a7
CP
2013 ')
2014
3eaa9939
DW
2015 dontaudit $1 user_home_type:dir getattr;
2016 dontaudit $1 user_home_type:file getattr;
2017')
2018
2019########################################
2020## <summary>
2021## Do not audit attempts to read user home files.
2022## </summary>
2023## <param name="domain">
2024## <summary>
2025## Domain to not audit.
2026## </summary>
2027## </param>
2028#
2029interface(`userdom_dontaudit_read_user_home_content_files',`
2030 gen_require(`
2031 attribute user_home_type;
2032 type user_home_dir_t;
2033 ')
2034
2035 dontaudit $1 user_home_dir_t:dir list_dir_perms;
2036 dontaudit $1 user_home_type:dir list_dir_perms;
2037 dontaudit $1 user_home_type:file read_file_perms;
2038 dontaudit $1 user_home_type:lnk_file read_lnk_file_perms;
fd89e19f
CP
2039')
2040
50aca6d2
CP
2041########################################
2042## <summary>
296273a7 2043## Do not audit attempts to append user home files.
50aca6d2
CP
2044## </summary>
2045## <param name="domain">
885b83ec 2046## <summary>
50aca6d2 2047## Domain to not audit.
885b83ec 2048## </summary>
50aca6d2
CP
2049## </param>
2050#
296273a7
CP
2051interface(`userdom_dontaudit_append_user_home_content_files',`
2052 gen_require(`
2053 type user_home_t;
2054 ')
2055
bf530f53 2056 dontaudit $1 user_home_t:file append_file_perms;
50aca6d2
CP
2057')
2058
fd89e19f
CP
2059########################################
2060## <summary>
296273a7 2061## Do not audit attempts to write user home files.
fd89e19f
CP
2062## </summary>
2063## <param name="domain">
885b83ec 2064## <summary>
296273a7 2065## Domain to not audit.
885b83ec 2066## </summary>
fd89e19f
CP
2067## </param>
2068#
296273a7
CP
2069interface(`userdom_dontaudit_write_user_home_content_files',`
2070 gen_require(`
2071 type user_home_t;
2072 ')
2073
bf530f53 2074 dontaudit $1 user_home_t:file write_file_perms;
daa0e0b0
CP
2075')
2076
4083191c
CP
2077########################################
2078## <summary>
2079## Delete files in a user home subdirectory.
2080## </summary>
2081## <param name="domain">
2082## <summary>
2083## Domain allowed access.
2084## </summary>
2085## </param>
2086#
2087interface(`userdom_delete_user_home_content_files',`
2088 gen_require(`
2089 type user_home_t;
2090 ')
2091
2092 allow $1 user_home_t:file delete_file_perms;
2093')
2094
d4dca585
CP
2095########################################
2096## <summary>
296273a7 2097## Do not audit attempts to write user home files.
d4dca585
CP
2098## </summary>
2099## <param name="domain">
885b83ec 2100## <summary>
d4dca585 2101## Domain to not audit.
885b83ec 2102## </summary>
d4dca585
CP
2103## </param>
2104#
296273a7
CP
2105interface(`userdom_dontaudit_relabel_user_home_content_files',`
2106 gen_require(`
2107 type user_home_t;
2108 ')
2109
2110 dontaudit $1 user_home_t:file relabel_file_perms;
d4dca585
CP
2111')
2112
0404a390 2113########################################
ab940a4c 2114## <summary>
296273a7 2115## Read user home subdirectory symbolic links.
ab940a4c 2116## </summary>
414e4151 2117## <param name="domain">
885b83ec 2118## <summary>
725926c5 2119## Domain allowed access.
885b83ec 2120## </summary>
414e4151 2121## </param>
0404a390 2122#
296273a7
CP
2123interface(`userdom_read_user_home_content_symlinks',`
2124 gen_require(`
2125 type user_home_dir_t, user_home_t;
2126 ')
2127
3eaa9939 2128 allow $1 { user_home_dir_t user_home_t }:lnk_file read_lnk_file_perms;
daa0e0b0
CP
2129')
2130
763c441e 2131########################################
ab940a4c 2132## <summary>
296273a7 2133## Execute user home files.
ab940a4c 2134## </summary>
414e4151 2135## <param name="domain">
885b83ec 2136## <summary>
296273a7 2137## Domain allowed access.
885b83ec 2138## </summary>
414e4151 2139## </param>
296273a7 2140## <rolecap/>
763c441e 2141#
296273a7
CP
2142interface(`userdom_exec_user_home_content_files',`
2143 gen_require(`
3eaa9939
DW
2144 type user_home_dir_t;
2145 attribute user_home_type;
296273a7
CP
2146 ')
2147
2148 files_search_home($1)
3eaa9939
DW
2149 exec_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
2150 dontaudit $1 user_home_type:sock_file execute;
296273a7 2151 ')
763c441e 2152
fd89e19f
CP
2153########################################
2154## <summary>
296273a7 2155## Do not audit attempts to execute user home files.
fd89e19f
CP
2156## </summary>
2157## <param name="domain">
885b83ec 2158## <summary>
a0546c9d 2159## Domain to not audit.
885b83ec 2160## </summary>
fd89e19f
CP
2161## </param>
2162#
296273a7
CP
2163interface(`userdom_dontaudit_exec_user_home_content_files',`
2164 gen_require(`
2165 type user_home_t;
2166 ')
2167
bf530f53 2168 dontaudit $1 user_home_t:file exec_file_perms;
fd89e19f
CP
2169')
2170
2171########################################
2172## <summary>
296273a7
CP
2173## Create, read, write, and delete files
2174## in a user home subdirectory.
fd89e19f
CP
2175## </summary>
2176## <param name="domain">
885b83ec 2177## <summary>
725926c5 2178## Domain allowed access.
885b83ec 2179## </summary>
fd89e19f
CP
2180## </param>
2181#
296273a7
CP
2182interface(`userdom_manage_user_home_content_files',`
2183 gen_require(`
2184 type user_home_dir_t, user_home_t;
2185 ')
2186
2187 manage_files_pattern($1, user_home_t, user_home_t)
2188 allow $1 user_home_dir_t:dir search_dir_perms;
2189 files_search_home($1)
fd89e19f
CP
2190')
2191
799a0b43
CP
2192########################################
2193## <summary>
296273a7
CP
2194## Do not audit attempts to create, read, write, and delete directories
2195## in a user home subdirectory.
799a0b43
CP
2196## </summary>
2197## <param name="domain">
885b83ec 2198## <summary>
a0546c9d 2199## Domain to not audit.
885b83ec 2200## </summary>
799a0b43
CP
2201## </param>
2202#
296273a7
CP
2203interface(`userdom_dontaudit_manage_user_home_content_dirs',`
2204 gen_require(`
2205 type user_home_dir_t, user_home_t;
2206 ')
2207
2208 dontaudit $1 user_home_t:dir manage_dir_perms;
799a0b43
CP
2209')
2210
44fc06b0
CP
2211########################################
2212## <summary>
296273a7
CP
2213## Create, read, write, and delete symbolic links
2214## in a user home subdirectory.
44fc06b0
CP
2215## </summary>
2216## <param name="domain">
885b83ec 2217## <summary>
296273a7 2218## Domain allowed access.
885b83ec 2219## </summary>
44fc06b0
CP
2220## </param>
2221#
296273a7
CP
2222interface(`userdom_manage_user_home_content_symlinks',`
2223 gen_require(`
2224 type user_home_dir_t, user_home_t;
2225 ')
2226
2227 manage_lnk_files_pattern($1, user_home_t, user_home_t)
2228 allow $1 user_home_dir_t:dir search_dir_perms;
2229 files_search_home($1)
44fc06b0
CP
2230')
2231
4083191c
CP
2232########################################
2233## <summary>
2234## Delete symbolic links in a user home directory.
2235## </summary>
2236## <param name="domain">
2237## <summary>
2238## Domain allowed access.
2239## </summary>
2240## </param>
2241#
2242interface(`userdom_delete_user_home_content_symlinks',`
2243 gen_require(`
2244 type user_home_t;
2245 ')
2246
2247 allow $1 user_home_t:lnk_file delete_lnk_file_perms;
2248')
2249
ae9e2716
CP
2250########################################
2251## <summary>
296273a7
CP
2252## Create, read, write, and delete named pipes
2253## in a user home subdirectory.
ae9e2716
CP
2254## </summary>
2255## <param name="domain">
885b83ec 2256## <summary>
296273a7 2257## Domain allowed access.
885b83ec 2258## </summary>
ae9e2716
CP
2259## </param>
2260#
296273a7
CP
2261interface(`userdom_manage_user_home_content_pipes',`
2262 gen_require(`
2263 type user_home_dir_t, user_home_t;
2264 ')
2265
2266 manage_fifo_files_pattern($1, user_home_t, user_home_t)
2267 allow $1 user_home_dir_t:dir search_dir_perms;
2268 files_search_home($1)
ae9e2716
CP
2269')
2270
2271########################################
2272## <summary>
296273a7
CP
2273## Create, read, write, and delete named sockets
2274## in a user home subdirectory.
ae9e2716
CP
2275## </summary>
2276## <param name="domain">
885b83ec 2277## <summary>
296273a7 2278## Domain allowed access.
885b83ec 2279## </summary>
ae9e2716
CP
2280## </param>
2281#
296273a7
CP
2282interface(`userdom_manage_user_home_content_sockets',`
2283 gen_require(`
2284 type user_home_dir_t, user_home_t;
2285 ')
2286
2287 allow $1 user_home_dir_t:dir search_dir_perms;
2288 manage_sock_files_pattern($1, user_home_t, user_home_t)
2289 files_search_home($1)
ae9e2716
CP
2290')
2291
725926c5
CP
2292########################################
2293## <summary>
296273a7
CP
2294## Create objects in a user home directory
2295## with an automatic type transition to
2296## a specified private type.
725926c5
CP
2297## </summary>
2298## <param name="domain">
885b83ec 2299## <summary>
725926c5 2300## Domain allowed access.
885b83ec 2301## </summary>
725926c5 2302## </param>
296273a7 2303## <param name="private_type">
885b83ec 2304## <summary>
296273a7 2305## The type of the object to create.
885b83ec 2306## </summary>
b11a75a5 2307## </param>
296273a7 2308## <param name="object_class">
885b83ec 2309## <summary>
296273a7 2310## The class of the object to be created.
885b83ec 2311## </summary>
e1c41428
CP
2312## </param>
2313#
296273a7
CP
2314interface(`userdom_user_home_dir_filetrans',`
2315 gen_require(`
2316 type user_home_dir_t;
2317 ')
2318
2319 filetrans_pattern($1, user_home_dir_t, $2, $3)
2320 files_search_home($1)
e1c41428
CP
2321')
2322
10b1f324
CP
2323########################################
2324## <summary>
296273a7
CP
2325## Create objects in a user home directory
2326## with an automatic type transition to
2327## a specified private type.
10b1f324
CP
2328## </summary>
2329## <param name="domain">
885b83ec 2330## <summary>
10b1f324 2331## Domain allowed access.
885b83ec 2332## </summary>
10b1f324 2333## </param>
296273a7 2334## <param name="private_type">
885b83ec 2335## <summary>
296273a7 2336## The type of the object to create.
885b83ec 2337## </summary>
ee9500ec
CP
2338## </param>
2339## <param name="object_class">
885b83ec 2340## <summary>
10b1f324 2341## The class of the object to be created.
885b83ec 2342## </summary>
10b1f324
CP
2343## </param>
2344#
296273a7
CP
2345interface(`userdom_user_home_content_filetrans',`
2346 gen_require(`
2347 type user_home_dir_t, user_home_t;
2348 ')
2349
2350 filetrans_pattern($1, user_home_t, $2, $3)
2351 allow $1 user_home_dir_t:dir search_dir_perms;
2352 files_search_home($1)
10b1f324
CP
2353')
2354
2355########################################
2356## <summary>
296273a7
CP
2357## Create objects in a user home directory
2358## with an automatic type transition to
2359## the user home file type.
10b1f324
CP
2360## </summary>
2361## <param name="domain">
885b83ec 2362## <summary>
296273a7
CP
2363## Domain allowed access.
2364## </summary>
2365## </param>
2366## <param name="object_class">
2367## <summary>
2368## The class of the object to be created.
885b83ec 2369## </summary>
10b1f324
CP
2370## </param>
2371#
296273a7
CP
2372interface(`userdom_user_home_dir_filetrans_user_home_content',`
2373 gen_require(`
2374 type user_home_dir_t, user_home_t;
2375 ')
2376
2377 filetrans_pattern($1, user_home_dir_t, user_home_t, $2)
2378 files_search_home($1)
10b1f324
CP
2379')
2380
fd89e19f
CP
2381########################################
2382## <summary>
ff8f0a63 2383## Write to user temporary named sockets.
fd89e19f
CP
2384## </summary>
2385## <param name="domain">
885b83ec 2386## <summary>
ff8f0a63 2387## Domain allowed access.
885b83ec 2388## </summary>
fd89e19f
CP
2389## </param>
2390#
296273a7
CP
2391interface(`userdom_write_user_tmp_sockets',`
2392 gen_require(`
2393 type user_tmp_t;
2394 ')
2395
4cb24aed 2396 allow $1 user_tmp_t:sock_file write_sock_file_perms;
296273a7 2397 files_search_tmp($1)
ed38ca9f 2398')
fd89e19f 2399
ed38ca9f
CP
2400########################################
2401## <summary>
296273a7 2402## List user temporary directories.
ed38ca9f
CP
2403## </summary>
2404## <param name="domain">
2405## <summary>
2406## Domain allowed access.
2407## </summary>
2408## </param>
2409#
296273a7
CP
2410interface(`userdom_list_user_tmp',`
2411 gen_require(`
2412 type user_tmp_t;
2413 ')
2414
2415 allow $1 user_tmp_t:dir list_dir_perms;
2416 files_search_tmp($1)
fd89e19f
CP
2417')
2418
1786478c
CP
2419########################################
2420## <summary>
296273a7
CP
2421## Do not audit attempts to list user
2422## temporary directories.
1786478c
CP
2423## </summary>
2424## <param name="domain">
2425## <summary>
296273a7 2426## Domain to not audit.
1786478c
CP
2427## </summary>
2428## </param>
2429#
296273a7 2430interface(`userdom_dontaudit_list_user_tmp',`
1786478c 2431 gen_require(`
296273a7 2432 type user_tmp_t;
1786478c
CP
2433 ')
2434
296273a7 2435 dontaudit $1 user_tmp_t:dir list_dir_perms;
1786478c
CP
2436')
2437
9778406f
CP
2438########################################
2439## <summary>
296273a7
CP
2440## Do not audit attempts to manage users
2441## temporary directories.
9778406f
CP
2442## </summary>
2443## <param name="domain">
885b83ec 2444## <summary>
296273a7 2445## Domain to not audit.
885b83ec 2446## </summary>
9778406f
CP
2447## </param>
2448#
296273a7 2449interface(`userdom_dontaudit_manage_user_tmp_dirs',`
9778406f 2450 gen_require(`
296273a7 2451 type user_tmp_t;
9778406f
CP
2452 ')
2453
296273a7 2454 dontaudit $1 user_tmp_t:dir manage_dir_perms;
9778406f
CP
2455')
2456
4bf4ed9e 2457########################################
ab940a4c 2458## <summary>
296273a7 2459## Read user temporary files.
ab940a4c 2460## </summary>
414e4151 2461## <param name="domain">
885b83ec 2462## <summary>
725926c5 2463## Domain allowed access.
885b83ec 2464## </summary>
414e4151 2465## </param>
4bf4ed9e 2466#
296273a7 2467interface(`userdom_read_user_tmp_files',`
0404a390 2468 gen_require(`
296273a7 2469 type user_tmp_t;
0404a390 2470 ')
0c73cd25 2471
296273a7
CP
2472 read_files_pattern($1, user_tmp_t, user_tmp_t)
2473 allow $1 user_tmp_t:dir list_dir_perms;
2474 files_search_tmp($1)
4bf4ed9e
CP
2475')
2476
ae9e2716
CP
2477########################################
2478## <summary>
296273a7
CP
2479## Do not audit attempts to read users
2480## temporary files.
ae9e2716
CP
2481## </summary>
2482## <param name="domain">
885b83ec 2483## <summary>
ae9e2716 2484## Domain to not audit.
885b83ec 2485## </summary>
ae9e2716
CP
2486## </param>
2487#
296273a7 2488interface(`userdom_dontaudit_read_user_tmp_files',`
ae9e2716 2489 gen_require(`
296273a7 2490 type user_tmp_t;
ae9e2716
CP
2491 ')
2492
3eaa9939 2493 dontaudit $1 user_tmp_t:file read_inherited_file_perms;
ae9e2716
CP
2494')
2495
daa0e0b0 2496########################################
ab940a4c 2497## <summary>
296273a7
CP
2498## Do not audit attempts to append users
2499## temporary files.
ab940a4c 2500## </summary>
414e4151 2501## <param name="domain">
885b83ec 2502## <summary>
296273a7 2503## Domain to not audit.
885b83ec 2504## </summary>
414e4151 2505## </param>
daa0e0b0 2506#
296273a7 2507interface(`userdom_dontaudit_append_user_tmp_files',`
0404a390 2508 gen_require(`
296273a7 2509 type user_tmp_t;
0404a390 2510 ')
0c73cd25 2511
bf530f53 2512 dontaudit $1 user_tmp_t:file append_file_perms;
daa0e0b0
CP
2513')
2514
fc6524d7
CP
2515########################################
2516## <summary>
296273a7 2517## Read and write user temporary files.
fc6524d7
CP
2518## </summary>
2519## <param name="domain">
885b83ec 2520## <summary>
725926c5 2521## Domain allowed access.
885b83ec 2522## </summary>
fc6524d7
CP
2523## </param>
2524#
296273a7 2525interface(`userdom_rw_user_tmp_files',`
fc6524d7 2526 gen_require(`
296273a7 2527 type user_tmp_t;
fc6524d7
CP
2528 ')
2529
296273a7
CP
2530 allow $1 user_tmp_t:dir list_dir_perms;
2531 rw_files_pattern($1, user_tmp_t, user_tmp_t)
2532 files_search_tmp($1)
fc6524d7
CP
2533')
2534
2535########################################
2536## <summary>
296273a7
CP
2537## Do not audit attempts to manage users
2538## temporary files.
fc6524d7
CP
2539## </summary>
2540## <param name="domain">
885b83ec 2541## <summary>
296273a7 2542## Domain to not audit.
885b83ec 2543## </summary>
fc6524d7
CP
2544## </param>
2545#
296273a7 2546interface(`userdom_dontaudit_manage_user_tmp_files',`
fc6524d7 2547 gen_require(`
296273a7 2548 type user_tmp_t;
fc6524d7
CP
2549 ')
2550
296273a7 2551 dontaudit $1 user_tmp_t:file manage_file_perms;
fc6524d7
CP
2552')
2553
2554########################################
2555## <summary>
296273a7 2556## Read user temporary symbolic links.
fc6524d7
CP
2557## </summary>
2558## <param name="domain">
885b83ec 2559## <summary>
725926c5 2560## Domain allowed access.
885b83ec 2561## </summary>
fc6524d7
CP
2562## </param>
2563#
296273a7 2564interface(`userdom_read_user_tmp_symlinks',`
fc6524d7 2565 gen_require(`
296273a7 2566 type user_tmp_t;
fc6524d7
CP
2567 ')
2568
296273a7
CP
2569 read_lnk_files_pattern($1, user_tmp_t, user_tmp_t)
2570 allow $1 user_tmp_t:dir list_dir_perms;
2571 files_search_tmp($1)
fc6524d7
CP
2572')
2573
784a3bbc
CP
2574########################################
2575## <summary>
296273a7
CP
2576## Create, read, write, and delete user
2577## temporary directories.
784a3bbc 2578## </summary>
784a3bbc 2579## <param name="domain">
885b83ec 2580## <summary>
725926c5 2581## Domain allowed access.
885b83ec 2582## </summary>
784a3bbc
CP
2583## </param>
2584#
296273a7 2585interface(`userdom_manage_user_tmp_dirs',`
784a3bbc 2586 gen_require(`
296273a7 2587 type user_tmp_t;
784a3bbc
CP
2588 ')
2589
296273a7
CP
2590 manage_dirs_pattern($1, user_tmp_t, user_tmp_t)
2591 files_search_tmp($1)
784a3bbc
CP
2592')
2593
daa0e0b0 2594########################################
ab940a4c 2595## <summary>
296273a7
CP
2596## Create, read, write, and delete user
2597## temporary files.
ab940a4c
CP
2598## </summary>
2599## <param name="domain">
885b83ec 2600## <summary>
725926c5 2601## Domain allowed access.
885b83ec 2602## </summary>
ab940a4c
CP
2603## </param>
2604#
296273a7 2605interface(`userdom_manage_user_tmp_files',`
ab940a4c 2606 gen_require(`
296273a7 2607 type user_tmp_t;
ab940a4c
CP
2608 ')
2609
296273a7
CP
2610 manage_files_pattern($1, user_tmp_t, user_tmp_t)
2611 files_search_tmp($1)
ab940a4c
CP
2612')
2613
2614########################################
2615## <summary>
296273a7
CP
2616## Create, read, write, and delete user
2617## temporary symbolic links.
ab940a4c 2618## </summary>
414e4151 2619## <param name="domain">
885b83ec 2620## <summary>
725926c5 2621## Domain allowed access.
885b83ec 2622## </summary>
414e4151 2623## </param>
490639cd 2624#
296273a7 2625interface(`userdom_manage_user_tmp_symlinks',`
0404a390 2626 gen_require(`
296273a7 2627 type user_tmp_t;
0404a390 2628 ')
0c73cd25 2629
296273a7
CP
2630 manage_lnk_files_pattern($1, user_tmp_t, user_tmp_t)
2631 files_search_tmp($1)
490639cd
CP
2632')
2633
4bf4ed9e 2634########################################
ab940a4c 2635## <summary>
296273a7
CP
2636## Create, read, write, and delete user
2637## temporary named pipes.
ab940a4c 2638## </summary>
414e4151 2639## <param name="domain">
885b83ec 2640## <summary>
725926c5 2641## Domain allowed access.
885b83ec 2642## </summary>
414e4151 2643## </param>
4bf4ed9e 2644#
296273a7 2645interface(`userdom_manage_user_tmp_pipes',`
0404a390 2646 gen_require(`
296273a7 2647 type user_tmp_t;
0404a390 2648 ')
0c73cd25 2649
296273a7
CP
2650 manage_fifo_files_pattern($1, user_tmp_t, user_tmp_t)
2651 files_search_tmp($1)
4bf4ed9e
CP
2652')
2653
0404a390 2654########################################
ab940a4c 2655## <summary>
296273a7
CP
2656## Create, read, write, and delete user
2657## temporary named sockets.
ab940a4c 2658## </summary>
414e4151 2659## <param name="domain">
885b83ec 2660## <summary>
57a96cbd 2661## Domain allowed access.
885b83ec 2662## </summary>
414e4151 2663## </param>
0404a390 2664#
296273a7
CP
2665interface(`userdom_manage_user_tmp_sockets',`
2666 gen_require(`
2667 type user_tmp_t;
2668 ')
2669
2670 manage_sock_files_pattern($1, user_tmp_t, user_tmp_t)
2671 files_search_tmp($1)
4bf4ed9e
CP
2672')
2673
4614e83f
CP
2674########################################
2675## <summary>
296273a7
CP
2676## Create objects in a user temporary directory
2677## with an automatic type transition to
2678## a specified private type.
4614e83f
CP
2679## </summary>
2680## <param name="domain">
885b83ec 2681## <summary>
4614e83f 2682## Domain allowed access.
885b83ec 2683## </summary>
4614e83f 2684## </param>
296273a7
CP
2685## <param name="private_type">
2686## <summary>
2687## The type of the object to create.
2688## </summary>
2689## </param>
2690## <param name="object_class">
2691## <summary>
2692## The class of the object to be created.
2693## </summary>
2694## </param>
4614e83f 2695#
296273a7
CP
2696interface(`userdom_user_tmp_filetrans',`
2697 gen_require(`
2698 type user_tmp_t;
2699 ')
2700
2701 filetrans_pattern($1, user_tmp_t, $2, $3)
2702 files_search_tmp($1)
4614e83f
CP
2703')
2704
daa0e0b0 2705########################################
ab940a4c 2706## <summary>
296273a7
CP
2707## Create objects in the temporary directory
2708## with an automatic type transition to
2709## the user temporary type.
57a96cbd
CP
2710## </summary>
2711## <param name="domain">
885b83ec 2712## <summary>
57a96cbd 2713## Domain allowed access.
885b83ec 2714## </summary>
57a96cbd 2715## </param>
1c1ac67f 2716## <param name="object_class">
885b83ec 2717## <summary>
57a96cbd 2718## The class of the object to be created.
885b83ec 2719## </summary>
57a96cbd
CP
2720## </param>
2721#
296273a7
CP
2722interface(`userdom_tmp_filetrans_user_tmp',`
2723 gen_require(`
2724 type user_tmp_t;
2725 ')
2726
2727 files_tmp_filetrans($1, user_tmp_t, $2)
57a96cbd
CP
2728')
2729
a9e9678f
CP
2730########################################
2731## <summary>
2732## Read user tmpfs files.
2733## </summary>
2734## <param name="domain">
2735## <summary>
2736## Domain allowed access.
2737## </summary>
2738## </param>
2739#
2740interface(`userdom_read_user_tmpfs_files',`
2741 gen_require(`
2742 type user_tmpfs_t;
2743 ')
2744
2745 read_files_pattern($1, user_tmpfs_t, user_tmpfs_t)
3eaa9939 2746 read_lnk_files_pattern($1, user_tmpfs_t, user_tmpfs_t)
a9e9678f
CP
2747 allow $1 user_tmpfs_t:dir list_dir_perms;
2748 fs_search_tmpfs($1)
2749')
2750
d4dca585
CP
2751########################################
2752## <summary>
3eaa9939 2753## Read/Write user tmpfs files.
d4dca585
CP
2754## </summary>
2755## <param name="domain">
885b83ec 2756## <summary>
d4dca585 2757## Domain allowed access.
885b83ec 2758## </summary>
d4dca585
CP
2759## </param>
2760#
296273a7
CP
2761interface(`userdom_rw_user_tmpfs_files',`
2762 gen_require(`
2763 type user_tmpfs_t;
2764 ')
2765
2766 rw_files_pattern($1, user_tmpfs_t, user_tmpfs_t)
2767 read_lnk_files_pattern($1, user_tmpfs_t, user_tmpfs_t)
2768 allow $1 user_tmpfs_t:dir list_dir_perms;
2769 fs_search_tmpfs($1)
d4dca585
CP
2770')
2771
d9845ae9
CP
2772########################################
2773## <summary>
296273a7 2774## Get the attributes of a user domain tty.
d9845ae9
CP
2775## </summary>
2776## <param name="domain">
2777## <summary>
2778## Domain allowed access.
2779## </summary>
2780## </param>
2781#
296273a7
CP
2782interface(`userdom_getattr_user_ttys',`
2783 gen_require(`
2784 type user_tty_device_t;
2785 ')
2786
bf530f53 2787 allow $1 user_tty_device_t:chr_file getattr_chr_file_perms;
d9845ae9
CP
2788')
2789
57a96cbd
CP
2790########################################
2791## <summary>
296273a7 2792## Do not audit attempts to get the attributes of a user domain tty.
57a96cbd
CP
2793## </summary>
2794## <param name="domain">
885b83ec 2795## <summary>
a0546c9d 2796## Domain to not audit.
885b83ec 2797## </summary>
57a96cbd
CP
2798## </param>
2799#
296273a7
CP
2800interface(`userdom_dontaudit_getattr_user_ttys',`
2801 gen_require(`
2802 type user_tty_device_t;
2803 ')
2804
bf530f53 2805 dontaudit $1 user_tty_device_t:chr_file getattr_chr_file_perms;
57a96cbd
CP
2806')
2807
d6d16b97
CP
2808########################################
2809## <summary>
296273a7 2810## Set the attributes of a user domain tty.
d6d16b97
CP
2811## </summary>
2812## <param name="domain">
2813## <summary>
2814## Domain allowed access.
2815## </summary>
2816## </param>
2817#
296273a7
CP
2818interface(`userdom_setattr_user_ttys',`
2819 gen_require(`
2820 type user_tty_device_t;
2821 ')
2822
bf530f53 2823 allow $1 user_tty_device_t:chr_file setattr_chr_file_perms;
d6d16b97
CP
2824')
2825
165b42d2
CP
2826########################################
2827## <summary>
296273a7 2828## Do not audit attempts to set the attributes of a user domain tty.
165b42d2
CP
2829## </summary>
2830## <param name="domain">
2831## <summary>
a0546c9d 2832## Domain to not audit.
165b42d2
CP
2833## </summary>
2834## </param>
2835#
296273a7
CP
2836interface(`userdom_dontaudit_setattr_user_ttys',`
2837 gen_require(`
2838 type user_tty_device_t;
2839 ')
2840
bf530f53 2841 dontaudit $1 user_tty_device_t:chr_file setattr_chr_file_perms;
165b42d2
CP
2842')
2843
d6d16b97
CP
2844########################################
2845## <summary>
296273a7 2846## Read and write a user domain tty.
d6d16b97
CP
2847## </summary>
2848## <param name="domain">
2849## <summary>
2850## Domain allowed access.
2851## </summary>
2852## </param>
2853#
296273a7
CP
2854interface(`userdom_use_user_ttys',`
2855 gen_require(`
2856 type user_tty_device_t;
2857 ')
2858
2859 allow $1 user_tty_device_t:chr_file rw_term_perms;
d6d16b97
CP
2860')
2861
57a96cbd
CP
2862########################################
2863## <summary>
296273a7 2864## Read and write a user domain pty.
57a96cbd
CP
2865## </summary>
2866## <param name="domain">
885b83ec 2867## <summary>
57a96cbd 2868## Domain allowed access.
885b83ec 2869## </summary>
57a96cbd
CP
2870## </param>
2871#
296273a7
CP
2872interface(`userdom_use_user_ptys',`
2873 gen_require(`
2874 type user_devpts_t;
2875 ')
2876
2877 allow $1 user_devpts_t:chr_file rw_term_perms;
57a96cbd
CP
2878')
2879
d6d16b97
CP
2880########################################
2881## <summary>
c46376e6 2882## Read and write a user TTYs and PTYs.
d6d16b97 2883## </summary>
c46376e6
CP
2884## <desc>
2885## <p>
2886## Allow the specified domain to read and write user
2887## TTYs and PTYs. This will allow the domain to
2888## interact with the user via the terminal. Typically
2889## all interactive applications will require this
2890## access.
2891## </p>
2892## <p>
2893## However, this also allows the applications to spy
2894## on user sessions or inject information into the
2895## user session. Thus, this access should likely
2896## not be allowed for non-interactive domains.
2897## </p>
2898## </desc>
d6d16b97
CP
2899## <param name="domain">
2900## <summary>
2901## Domain allowed access.
2902## </summary>
2903## </param>
c46376e6 2904## <infoflow type="both" weight="10"/>
d6d16b97 2905#
296273a7
CP
2906interface(`userdom_use_user_terminals',`
2907 gen_require(`
2908 type user_tty_device_t, user_devpts_t;
2909 ')
2910
2911 allow $1 user_tty_device_t:chr_file rw_term_perms;
2912 allow $1 user_devpts_t:chr_file rw_term_perms;
2913 term_list_ptys($1)
d6d16b97
CP
2914')
2915
57a96cbd
CP
2916########################################
2917## <summary>
296273a7
CP
2918## Do not audit attempts to read and write
2919## a user domain tty and pty.
57a96cbd
CP
2920## </summary>
2921## <param name="domain">
885b83ec 2922## <summary>
a0546c9d 2923## Domain to not audit.
885b83ec 2924## </summary>
57a96cbd
CP
2925## </param>
2926#
296273a7
CP
2927interface(`userdom_dontaudit_use_user_terminals',`
2928 gen_require(`
2929 type user_tty_device_t, user_devpts_t;
2930 ')
2931
2932 dontaudit $1 user_tty_device_t:chr_file rw_term_perms;
2933 dontaudit $1 user_devpts_t:chr_file rw_term_perms;
57a96cbd
CP
2934')
2935
2936########################################
2937## <summary>
296273a7
CP
2938## Execute a shell in all user domains. This
2939## is an explicit transition, requiring the
2940## caller to use setexeccon().
57a96cbd
CP
2941## </summary>
2942## <param name="domain">
885b83ec 2943## <summary>
a0546c9d 2944## Domain allowed to transition.
885b83ec 2945## </summary>
57a96cbd
CP
2946## </param>
2947#
296273a7
CP
2948interface(`userdom_spec_domtrans_all_users',`
2949 gen_require(`
2950 attribute userdomain;
2951 ')
2952
3f67f722 2953 corecmd_shell_spec_domtrans($1, userdomain)
296273a7
CP
2954 allow userdomain $1:fd use;
2955 allow userdomain $1:fifo_file rw_file_perms;
2956 allow userdomain $1:process sigchld;
57a96cbd
CP
2957')
2958
2959########################################
2960## <summary>
296273a7
CP
2961## Execute an Xserver session in all unprivileged user domains. This
2962## is an explicit transition, requiring the
2963## caller to use setexeccon().
57a96cbd
CP
2964## </summary>
2965## <param name="domain">
885b83ec 2966## <summary>
a0546c9d 2967## Domain allowed to transition.
885b83ec 2968## </summary>
57a96cbd
CP
2969## </param>
2970#
296273a7
CP
2971interface(`userdom_xsession_spec_domtrans_all_users',`
2972 gen_require(`
2973 attribute userdomain;
2974 ')
2975
3f67f722 2976 xserver_xsession_spec_domtrans($1, userdomain)
296273a7
CP
2977 allow userdomain $1:fd use;
2978 allow userdomain $1:fifo_file rw_file_perms;
2979 allow userdomain $1:process sigchld;
57a96cbd
CP
2980')
2981
e08118a5
CP
2982########################################
2983## <summary>
296273a7
CP
2984## Execute a shell in all unprivileged user domains. This
2985## is an explicit transition, requiring the
2986## caller to use setexeccon().
e08118a5
CP
2987## </summary>
2988## <param name="domain">
885b83ec 2989## <summary>
a0546c9d 2990## Domain allowed to transition.
885b83ec 2991## </summary>
e08118a5
CP
2992## </param>
2993#
296273a7 2994interface(`userdom_spec_domtrans_unpriv_users',`
e08118a5 2995 gen_require(`
296273a7 2996 attribute unpriv_userdomain;
e08118a5
CP
2997 ')
2998
3f67f722 2999 corecmd_shell_spec_domtrans($1, unpriv_userdomain)
296273a7
CP
3000 allow unpriv_userdomain $1:fd use;
3001 allow unpriv_userdomain $1:fifo_file rw_file_perms;
3002 allow unpriv_userdomain $1:process sigchld;
e08118a5
CP
3003')
3004
d4dca585
CP
3005########################################
3006## <summary>
296273a7
CP
3007## Execute an Xserver session in all unprivileged user domains. This
3008## is an explicit transition, requiring the
3009## caller to use setexeccon().
d4dca585
CP
3010## </summary>
3011## <param name="domain">
885b83ec 3012## <summary>
a0546c9d 3013## Domain allowed to transition.
885b83ec 3014## </summary>
d4dca585
CP
3015## </param>
3016#
296273a7 3017interface(`userdom_xsession_spec_domtrans_unpriv_users',`
d4dca585 3018 gen_require(`
296273a7 3019 attribute unpriv_userdomain;
d4dca585
CP
3020 ')
3021
3f67f722 3022 xserver_xsession_spec_domtrans($1, unpriv_userdomain)
296273a7
CP
3023 allow unpriv_userdomain $1:fd use;
3024 allow unpriv_userdomain $1:fifo_file rw_file_perms;
3025 allow unpriv_userdomain $1:process sigchld;
d4dca585
CP
3026')
3027
6f8cda96
CP
3028########################################
3029## <summary>
296273a7 3030## Manage unpriviledged user SysV sempaphores.
6f8cda96
CP
3031## </summary>
3032## <param name="domain">
3033## <summary>
3034## Domain allowed access.
3035## </summary>
3036## </param>
3037#
296273a7 3038interface(`userdom_manage_unpriv_user_semaphores',`
6f8cda96 3039 gen_require(`
296273a7 3040 attribute unpriv_userdomain;
6f8cda96
CP
3041 ')
3042
296273a7 3043 allow $1 unpriv_userdomain:sem create_sem_perms;
6f8cda96
CP
3044')
3045
3046########################################
3047## <summary>
296273a7
CP
3048## Manage unpriviledged user SysV shared
3049## memory segments.
6f8cda96
CP
3050## </summary>
3051## <param name="domain">
3052## <summary>
3053## Domain allowed access.
3054## </summary>
3055## </param>
3056#
296273a7 3057interface(`userdom_manage_unpriv_user_shared_mem',`
6f8cda96 3058 gen_require(`
296273a7 3059 attribute unpriv_userdomain;
6f8cda96
CP
3060 ')
3061
296273a7 3062 allow $1 unpriv_userdomain:shm create_shm_perms;
6f8cda96
CP
3063')
3064
43989f82
CP
3065########################################
3066## <summary>
296273a7
CP
3067## Execute bin_t in the unprivileged user domains. This
3068## is an explicit transition, requiring the
3069## caller to use setexeccon().
43989f82
CP
3070## </summary>
3071## <param name="domain">
885b83ec 3072## <summary>
a0546c9d 3073## Domain allowed to transition.
885b83ec 3074## </summary>
43989f82
CP
3075## </param>
3076#
296273a7 3077interface(`userdom_bin_spec_domtrans_unpriv_users',`
43989f82 3078 gen_require(`
296273a7 3079 attribute unpriv_userdomain;
43989f82
CP
3080 ')
3081
3f67f722 3082 corecmd_bin_spec_domtrans($1, unpriv_userdomain)
296273a7
CP
3083 allow unpriv_userdomain $1:fd use;
3084 allow unpriv_userdomain $1:fifo_file rw_file_perms;
3085 allow unpriv_userdomain $1:process sigchld;
725926c5
CP
3086')
3087
6820a398
CP
3088########################################
3089## <summary>
296273a7
CP
3090## Execute all entrypoint files in unprivileged user
3091## domains. This is an explicit transition, requiring the
3092## caller to use setexeccon().
6820a398
CP
3093## </summary>
3094## <param name="domain">
885b83ec 3095## <summary>
6820a398 3096## Domain allowed access.
885b83ec 3097## </summary>
6820a398
CP
3098## </param>
3099#
296273a7 3100interface(`userdom_entry_spec_domtrans_unpriv_users',`
350b6ab7 3101 gen_require(`
296273a7 3102 attribute unpriv_userdomain;
6820a398 3103 ')
350b6ab7 3104
3f67f722 3105 domain_entry_file_spec_domtrans($1, unpriv_userdomain)
296273a7 3106 allow unpriv_userdomain $1:fd use;
3eaa9939 3107 allow unpriv_userdomain $1:fifo_file rw_fifo_file_perms;
296273a7 3108 allow unpriv_userdomain $1:process sigchld;
6820a398
CP
3109')
3110
1504ff3e
CP
3111########################################
3112## <summary>
296273a7 3113## Search users home directories.
1504ff3e
CP
3114## </summary>
3115## <param name="domain">
885b83ec 3116## <summary>
296273a7 3117## Domain allowed access.
885b83ec 3118## </summary>
1504ff3e
CP
3119## </param>
3120#
296273a7 3121interface(`userdom_search_user_home_content',`
350b6ab7 3122 gen_require(`
3eaa9939
DW
3123 type user_home_dir_t;
3124 attribute user_home_type;
1504ff3e 3125 ')
350b6ab7 3126
296273a7 3127 files_list_home($1)
3eaa9939
DW
3128 allow $1 { user_home_dir_t user_home_type }:dir search_dir_perms;
3129 allow $1 { user_home_dir_t user_home_type }:lnk_file read_lnk_file_perms;
1504ff3e
CP
3130')
3131
f6abfdb8
CP
3132########################################
3133## <summary>
296273a7 3134## Send general signals to unprivileged user domains.
f6abfdb8
CP
3135## </summary>
3136## <param name="domain">
885b83ec 3137## <summary>
f6abfdb8 3138## Domain allowed access.
885b83ec 3139## </summary>
f6abfdb8
CP
3140## </param>
3141#
296273a7 3142interface(`userdom_signal_unpriv_users',`
f6abfdb8 3143 gen_require(`
296273a7 3144 attribute unpriv_userdomain;
f6abfdb8
CP
3145 ')
3146
296273a7 3147 allow $1 unpriv_userdomain:process signal;
f6abfdb8
CP
3148')
3149
3150########################################
3151## <summary>
296273a7 3152## Inherit the file descriptors from unprivileged user domains.
f6abfdb8
CP
3153## </summary>
3154## <param name="domain">
885b83ec 3155## <summary>
f6abfdb8 3156## Domain allowed access.
885b83ec 3157## </summary>
f6abfdb8
CP
3158## </param>
3159#
296273a7 3160interface(`userdom_use_unpriv_users_fds',`
f6abfdb8 3161 gen_require(`
296273a7 3162 attribute unpriv_userdomain;
f6abfdb8
CP
3163 ')
3164
296273a7 3165 allow $1 unpriv_userdomain:fd use;
f6abfdb8
CP
3166')
3167
725926c5
CP
3168########################################
3169## <summary>
c46376e6
CP
3170## Do not audit attempts to inherit the file descriptors
3171## from unprivileged user domains.
725926c5 3172## </summary>
c46376e6
CP
3173## <desc>
3174## <p>
3175## Do not audit attempts to inherit the file descriptors
3176## from unprivileged user domains. This will supress
3177## SELinux denial messages when the specified domain is denied
3178## the permission to inherit these file descriptors.
3179## </p>
3180## </desc>
725926c5 3181## <param name="domain">
885b83ec 3182## <summary>
c46376e6 3183## Domain to not audit.
885b83ec 3184## </summary>
725926c5 3185## </param>
c46376e6 3186## <infoflow type="none"/>
725926c5 3187#
296273a7 3188interface(`userdom_dontaudit_use_unpriv_user_fds',`
350b6ab7 3189 gen_require(`
296273a7 3190 attribute unpriv_userdomain;
725926c5 3191 ')
350b6ab7 3192
296273a7 3193 dontaudit $1 unpriv_userdomain:fd use;
43989f82
CP
3194')
3195
3196########################################
3197## <summary>
296273a7 3198## Do not audit attempts to use user ptys.
43989f82
CP
3199## </summary>
3200## <param name="domain">
885b83ec 3201## <summary>
296273a7 3202## Domain to not audit.
885b83ec 3203## </summary>
43989f82
CP
3204## </param>
3205#
296273a7 3206interface(`userdom_dontaudit_use_user_ptys',`
350b6ab7 3207 gen_require(`
296273a7 3208 type user_devpts_t;
725926c5 3209 ')
350b6ab7 3210
f5b49a5e 3211 dontaudit $1 user_devpts_t:chr_file rw_inherited_file_perms;
43989f82
CP
3212')
3213
3214########################################
3215## <summary>
296273a7 3216## Relabel files to unprivileged user pty types.
43989f82
CP
3217## </summary>
3218## <param name="domain">
885b83ec 3219## <summary>
43989f82 3220## Domain allowed access.
885b83ec 3221## </summary>
43989f82
CP
3222## </param>
3223#
296273a7 3224interface(`userdom_relabelto_user_ptys',`
350b6ab7 3225 gen_require(`
296273a7 3226 type user_devpts_t;
725926c5 3227 ')
350b6ab7 3228
296273a7 3229 allow $1 user_devpts_t:chr_file relabelto;
43989f82
CP
3230')
3231
57a96cbd
CP
3232########################################
3233## <summary>
296273a7
CP
3234## Do not audit attempts to relabel files from
3235## user pty types.
ab940a4c 3236## </summary>
414e4151 3237## <param name="domain">
885b83ec 3238## <summary>
a0546c9d 3239## Domain to not audit.
885b83ec 3240## </summary>
414e4151 3241## </param>
daa0e0b0 3242#
296273a7 3243interface(`userdom_dontaudit_relabelfrom_user_ptys',`
0404a390 3244 gen_require(`
296273a7 3245 type user_devpts_t;
0404a390 3246 ')
0c73cd25 3247
296273a7 3248 dontaudit $1 user_devpts_t:chr_file relabelfrom;
daa0e0b0
CP
3249')
3250
693d4aed
CP
3251########################################
3252## <summary>
296273a7 3253## Write all users files in /tmp
693d4aed
CP
3254## </summary>
3255## <param name="domain">
3256## <summary>
3257## Domain allowed access.
3258## </summary>
3259## </param>
3260#
296273a7 3261interface(`userdom_write_user_tmp_files',`
350b6ab7 3262 gen_require(`
296273a7 3263 type user_tmp_t;
693d4aed 3264 ')
350b6ab7 3265
3eaa9939
DW
3266 write_files_pattern($1, user_tmp_t, user_tmp_t)
3267')
3268
3269########################################
3270## <summary>
3271## Do not audit attempts to write users
3272## temporary files.
3273## </summary>
3274## <param name="domain">
3275## <summary>
3276## Domain to not audit.
3277## </summary>
3278## </param>
3279#
3280interface(`userdom_dontaudit_write_user_tmp_files',`
3281 gen_require(`
3282 type user_tmp_t;
3283 ')
3284
3285 dontaudit $1 user_tmp_t:file write;
3286')
3287
3288########################################
3289## <summary>
3290## Do not audit attempts to read/write users
3291## temporary fifo files.
3292## </summary>
3293## <param name="domain">
3294## <summary>
3295## Domain to not audit.
3296## </summary>
3297## </param>
3298#
3299interface(`userdom_dontaudit_rw_user_tmp_pipes',`
3300 gen_require(`
3301 type user_tmp_t;
3302 ')
3303
3304 dontaudit $1 user_tmp_t:fifo_file rw_inherited_fifo_file_perms;
693d4aed
CP
3305')
3306
ebdc3b79
CP
3307########################################
3308## <summary>
296273a7 3309## Do not audit attempts to use user ttys.
ebdc3b79
CP
3310## </summary>
3311## <param name="domain">
885b83ec 3312## <summary>
a0546c9d 3313## Domain to not audit.
885b83ec 3314## </summary>
ebdc3b79
CP
3315## </param>
3316#
296273a7 3317interface(`userdom_dontaudit_use_user_ttys',`
350b6ab7 3318 gen_require(`
296273a7 3319 type user_tty_device_t;
9cc2ccc4 3320 ')
350b6ab7 3321
296273a7 3322 dontaudit $1 user_tty_device_t:chr_file rw_file_perms;
ebdc3b79 3323')
c98340cf 3324
2629c659
CP
3325########################################
3326## <summary>
3327## Read the process state of all user domains.
3328## </summary>
3329## <param name="domain">
885b83ec 3330## <summary>
2629c659 3331## Domain allowed access.
885b83ec 3332## </summary>
2629c659
CP
3333## </param>
3334#
1815bad1 3335interface(`userdom_read_all_users_state',`
2629c659
CP
3336 gen_require(`
3337 attribute userdomain;
3338 ')
3339
3f67f722 3340 read_files_pattern($1, userdomain, userdomain)
3eaa9939 3341 read_lnk_files_pattern($1,userdomain,userdomain)
2629c659
CP
3342 kernel_search_proc($1)
3343')
3344
3345########################################
3346## <summary>
3347## Get the attributes of all user domains.
3348## </summary>
3349## <param name="domain">
885b83ec 3350## <summary>
2629c659 3351## Domain allowed access.
885b83ec 3352## </summary>
2629c659
CP
3353## </param>
3354#
15722ec9 3355interface(`userdom_getattr_all_users',`
2629c659
CP
3356 gen_require(`
3357 attribute userdomain;
3358 ')
3359
3360 allow $1 userdomain:process getattr;
3361')
3362
57a96cbd
CP
3363########################################
3364## <summary>
3365## Inherit the file descriptors from all user domains
3366## </summary>
3367## <param name="domain">
885b83ec 3368## <summary>
725926c5 3369## Domain allowed access.
885b83ec 3370## </summary>
57a96cbd
CP
3371## </param>
3372#
15722ec9 3373interface(`userdom_use_all_users_fds',`
57a96cbd
CP
3374 gen_require(`
3375 attribute userdomain;
57a96cbd
CP
3376 ')
3377
3378 allow $1 userdomain:fd use;
3379')
3380
3381########################################
eb3cb682
CP
3382## <summary>
3383## Do not audit attempts to inherit the file
3384## descriptors from any user domains.
3385## </summary>
3386## <param name="domain">
885b83ec 3387## <summary>
eb3cb682 3388## Domain to not audit.
885b83ec 3389## </summary>
eb3cb682
CP
3390## </param>
3391#
15722ec9 3392interface(`userdom_dontaudit_use_all_users_fds',`
eb3cb682
CP
3393 gen_require(`
3394 attribute userdomain;
eb3cb682
CP
3395 ')
3396
3397 dontaudit $1 userdomain:fd use;
3398')
3399
3400########################################
57a96cbd
CP
3401## <summary>
3402## Send general signals to all user domains.
3403## </summary>
3404## <param name="domain">
885b83ec 3405## <summary>
725926c5 3406## Domain allowed access.
885b83ec 3407## </summary>
57a96cbd
CP
3408## </param>
3409#
3410interface(`userdom_signal_all_users',`
3411 gen_require(`
3412 attribute userdomain;
57a96cbd
CP
3413 ')
3414
3415 allow $1 userdomain:process signal;
3416')
3417
246839f3
CP
3418########################################
3419## <summary>
3420## Send a SIGCHLD signal to all user domains.
3421## </summary>
3422## <param name="domain">
885b83ec 3423## <summary>
246839f3 3424## Domain allowed access.
885b83ec 3425## </summary>
246839f3
CP
3426## </param>
3427#
9fd4b818 3428interface(`userdom_sigchld_all_users',`
246839f3
CP
3429 gen_require(`
3430 attribute userdomain;
246839f3
CP
3431 ')
3432
a1fcff33 3433 allow $1 userdomain:process sigchld;
246839f3
CP
3434')
3435
fe3a1eb8
CP
3436########################################
3437## <summary>
3438## Create keys for all user domains.
3439## </summary>
3440## <param name="domain">
3441## <summary>
3442## Domain allowed access.
3443## </summary>
3444## </param>
3445#
3446interface(`userdom_create_all_users_keys',`
350b6ab7
CP
3447 gen_require(`
3448 attribute userdomain;
fe3a1eb8 3449 ')
350b6ab7
CP
3450
3451 allow $1 userdomain:key create;
fe3a1eb8
CP
3452')
3453
9fd4b818
CP
3454########################################
3455## <summary>
3456## Send a dbus message to all user domains.
3457## </summary>
3458## <param name="domain">
885b83ec 3459## <summary>
9fd4b818 3460## Domain allowed access.
885b83ec 3461## </summary>
9fd4b818
CP
3462## </param>
3463#
3464interface(`userdom_dbus_send_all_users',`
3465 gen_require(`
3466 attribute userdomain;
3467 class dbus send_msg;
3468 ')
3469
3470 allow $1 userdomain:dbus send_msg;
3471')
3eaa9939
DW
3472
3473########################################
3474## <summary>
3475## Allow apps to set rlimits on userdomain
3476## </summary>
3477## <param name="domain">
3478## <summary>
3479## Domain allowed access.
3480## </summary>
3481## </param>
3482#
3483interface(`userdom_set_rlimitnh',`
3484 gen_require(`
3485 attribute userdomain;
3486 ')
3487
3488 allow $1 userdomain:process rlimitinh;
3489')
3490
3491########################################
3492## <summary>
3493## Define this type as a Allow apps to set rlimits on userdomain
3494## </summary>
3495## <param name="domain">
3496## <summary>
3497## Domain allowed access.
3498## </summary>
3499## </param>
3500## <param name="userdomain_prefix">
3501## <summary>
3502## The prefix of the user domain (e.g., user
3503## is the prefix for user_t).
3504## </summary>
3505## </param>
3506## <param name="domain">
3507## <summary>
3508## Domain allowed access.
3509## </summary>
3510## </param>
3511#
3512template(`userdom_unpriv_usertype',`
3513 gen_require(`
3514 attribute unpriv_userdomain, userdomain;
3515 attribute $1_usertype;
3516 ')
3517 typeattribute $2 $1_usertype;
3518 typeattribute $2 unpriv_userdomain;
3519 typeattribute $2 userdomain;
3520
3521 ubac_constrained($2)
3522')
3523
3524########################################
3525## <summary>
3526## Connect to users over an unix stream socket.
3527## </summary>
3528## <param name="domain">
3529## <summary>
3530## Domain allowed access.
3531## </summary>
3532## </param>
3533#
3534interface(`userdom_stream_connect',`
3535 gen_require(`
3536 type user_tmp_t;
3537 attribute userdomain;
3538 ')
3539
3540 stream_connect_pattern($1, user_tmp_t, user_tmp_t, userdomain)
3541')
3542
3543########################################
3544## <summary>
3545## Ptrace user domains.
3546## </summary>
3547## <param name="domain">
3548## <summary>
3549## Domain allowed access.
3550## </summary>
3551## </param>
3552#
3553interface(`userdom_ptrace_all_users',`
3554 gen_require(`
3555 attribute userdomain;
3556 ')
3557
3558 allow $1 userdomain:process ptrace;
3559')
3560
3561########################################
3562## <summary>
3563## dontaudit Search /root
3564## </summary>
3565## <param name="domain">
3566## <summary>
3567## Domain allowed access.
3568## </summary>
3569## </param>
3570#
3571interface(`userdom_dontaudit_search_admin_dir',`
3572 gen_require(`
3573 type admin_home_t;
3574 ')
3575
3576 dontaudit $1 admin_home_t:dir search_dir_perms;
3577')
3578
3579########################################
3580## <summary>
3581## dontaudit list /root
3582## </summary>
3583## <param name="domain">
3584## <summary>
3585## Domain allowed access.
3586## </summary>
3587## </param>
3588#
3589interface(`userdom_dontaudit_list_admin_dir',`
3590 gen_require(`
3591 type admin_home_t;
3592 ')
3593
3594 dontaudit $1 admin_home_t:dir list_dir_perms;
3595')
3596
3597########################################
3598## <summary>
3599## Allow domain to list /root
3600## </summary>
3601## <param name="domain">
3602## <summary>
3603## Domain allowed access.
3604## </summary>
3605## </param>
3606#
3607interface(`userdom_list_admin_dir',`
3608 gen_require(`
3609 type admin_home_t;
3610 ')
3611
3612 allow $1 admin_home_t:dir list_dir_perms;
3613')
3614
3615########################################
3616## <summary>
3617## Allow Search /root
3618## </summary>
3619## <param name="domain">
3620## <summary>
3621## Domain allowed access.
3622## </summary>
3623## </param>
3624#
3625interface(`userdom_search_admin_dir',`
3626 gen_require(`
3627 type admin_home_t;
3628 ')
3629
3630 allow $1 admin_home_t:dir search_dir_perms;
3631')
3632
3633########################################
3634## <summary>
3635## RW unpriviledged user SysV sempaphores.
3636## </summary>
3637## <param name="domain">
3638## <summary>
3639## Domain allowed access.
3640## </summary>
3641## </param>
3642#
3643interface(`userdom_rw_semaphores',`
3644 gen_require(`
3645 attribute unpriv_userdomain;
3646 ')
3647
3648 allow $1 unpriv_userdomain:sem rw_sem_perms;
3649')
3650
3651########################################
3652## <summary>
3653## Send a message to unpriv users over a unix domain
3654## datagram socket.
3655## </summary>
3656## <param name="domain">
3657## <summary>
3658## Domain allowed access.
3659## </summary>
3660## </param>
3661#
3662interface(`userdom_dgram_send',`
3663 gen_require(`
3664 attribute unpriv_userdomain;
3665 ')
3666
3667 allow $1 unpriv_userdomain:unix_dgram_socket sendto;
3668')
3669
3670######################################
3671## <summary>
3672## Send a message to users over a unix domain
3673## datagram socket.
3674## </summary>
3675## <param name="domain">
3676## <summary>
3677## Domain allowed access.
3678## </summary>
3679## </param>
3680#
3681interface(`userdom_users_dgram_send',`
3682 gen_require(`
3683 attribute userdomain;
3684 ')
3685
3686 allow $1 userdomain:unix_dgram_socket sendto;
3687')
3688
3689#######################################
3690## <summary>
3691## Allow execmod on files in homedirectory
3692## </summary>
3693## <param name="domain">
3694## <summary>
3695## Domain allowed access.
3696## </summary>
3697## </param>
3698## <rolebase/>
3699#
3700interface(`userdom_execmod_user_home_files',`
3701 gen_require(`
3702 type user_home_type;
3703 ')
3704
3705 allow $1 user_home_type:file execmod;
3706')
3707
3708########################################
3709## <summary>
3710## Read admin home files.
3711## </summary>
3712## <param name="domain">
3713## <summary>
3714## Domain allowed access.
3715## </summary>
3716## </param>
3717## <rolecap/>
3718#
3719interface(`userdom_read_admin_home_files',`
3720 gen_require(`
3721 type admin_home_t;
3722 ')
3723
3724 read_files_pattern($1, admin_home_t, admin_home_t)
3725')
3726
3727########################################
3728## <summary>
3729## Execute admin home files.
3730## </summary>
3731## <param name="domain">
3732## <summary>
3733## Domain allowed access.
3734## </summary>
3735## </param>
3736## <rolecap/>
3737#
3738interface(`userdom_exec_admin_home_files',`
3739 gen_require(`
3740 type admin_home_t;
3741 ')
3742
3743 exec_files_pattern($1, admin_home_t, admin_home_t)
3744')
3745
3746########################################
3747## <summary>
3748## Append files inherited
3749## in the /root directory.
3750## </summary>
3751## <param name="domain">
3752## <summary>
3753## Domain allowed access.
3754## </summary>
3755## </param>
3756#
3757interface(`userdom_inherit_append_admin_home_files',`
3758 gen_require(`
3759 type admin_home_t;
3760 ')
3761
3762 allow $1 admin_home_t:file { getattr append };
3763')
3764
3765
3766#######################################
3767## <summary>
3768## Manage all files/directories in the homedir
3769## </summary>
3770## <param name="userdomain">
3771## <summary>
3772## The user domain
3773## </summary>
3774## </param>
3775## <rolebase/>
3776#
3777interface(`userdom_manage_user_home_content',`
3778 gen_require(`
3779 type user_home_dir_t, user_home_t;
3780 attribute user_home_type;
3781 ')
3782
3783 files_list_home($1)
3784 manage_dirs_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
3785 manage_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
3786 manage_lnk_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
3787 manage_sock_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
3788 manage_fifo_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
3789 filetrans_pattern($1, user_home_dir_t, user_home_t, { dir file lnk_file sock_file fifo_file })
3790
3791')
3792
3793
3794########################################
3795## <summary>
3796## Create objects in a user home directory
3797## with an automatic type transition to
3798## the user home file type.
3799## </summary>
3800## <param name="domain">
3801## <summary>
3802## Domain allowed access.
3803## </summary>
3804## </param>
3805## <param name="object_class">
3806## <summary>
3807## The class of the object to be created.
3808## </summary>
3809## </param>
3810#
3811interface(`userdom_user_home_dir_filetrans_pattern',`
3812 gen_require(`
3813 type user_home_dir_t, user_home_t;
3814 ')
3815
3816 type_transition $1 user_home_dir_t:$2 user_home_t;
3817')
3818
3819########################################
3820## <summary>
3821## Create objects in the /root directory
3822## with an automatic type transition to
3823## a specified private type.
3824## </summary>
3825## <param name="domain">
3826## <summary>
3827## Domain allowed access.
3828## </summary>
3829## </param>
3830## <param name="private_type">
3831## <summary>
3832## The type of the object to create.
3833## </summary>
3834## </param>
3835## <param name="object_class">
3836## <summary>
3837## The class of the object to be created.
3838## </summary>
3839## </param>
3840#
3841interface(`userdom_admin_home_dir_filetrans',`
3842 gen_require(`
3843 type admin_home_t;
3844 ')
3845
3846 filetrans_pattern($1, admin_home_t, $2, $3)
3847')
3848
3849########################################
3850## <summary>
3851## Send signull to unprivileged user domains.
3852## </summary>
3853## <param name="domain">
3854## <summary>
3855## Domain allowed access.
3856## </summary>
3857## </param>
3858#
3859interface(`userdom_signull_unpriv_users',`
3860 gen_require(`
3861 attribute unpriv_userdomain;
3862 ')
3863
3864 allow $1 unpriv_userdomain:process signull;
3865')
3866
3867########################################
3868## <summary>
3869## Write all users files in /tmp
3870## </summary>
3871## <param name="domain">
3872## <summary>
3873## Domain allowed access.
3874## </summary>
3875## </param>
3876#
3877interface(`userdom_write_user_tmp_dirs',`
3878 gen_require(`
3879 type user_tmp_t;
3880 ')
3881
3882 write_files_pattern($1, user_tmp_t, user_tmp_t)
3883')
3884
3885########################################
3886## <summary>
3887## Manage keys for all user domains.
3888## </summary>
3889## <param name="domain">
3890## <summary>
3891## Domain allowed access.
3892## </summary>
3893## </param>
3894#
3895interface(`userdom_manage_all_users_keys',`
3896 gen_require(`
3897 attribute userdomain;
3898 ')
3899
3900 allow $1 userdomain:key manage_key_perms;
3901')
3902
3903
3904########################################
3905## <summary>
3906## Do not audit attempts to read and write
3907## unserdomain stream.
3908## </summary>
3909## <param name="domain">
3910## <summary>
3911## Domain to not audit.
3912## </summary>
3913## </param>
3914#
3915interface(`userdom_dontaudit_rw_stream',`
3916 gen_require(`
3917 attribute userdomain;
3918 ')
3919
3920 dontaudit $1 userdomain:unix_stream_socket rw_socket_perms;
3921')
3922
3923########################################
3924## <summary>
3925## Append files
3926## in a user home subdirectory.
3927## </summary>
3928## <param name="domain">
3929## <summary>
3930## Domain allowed access.
3931## </summary>
3932## </param>
3933#
3934interface(`userdom_append_user_home_content_files',`
3935 gen_require(`
3936 type user_home_dir_t, user_home_t;
3937 ')
3938
3939 append_files_pattern($1, user_home_t, user_home_t)
3940 allow $1 user_home_dir_t:dir search_dir_perms;
3941 files_search_home($1)
3942')
3943
3944########################################
3945## <summary>
3946## Read files inherited
3947## in a user home subdirectory.
3948## </summary>
3949## <param name="domain">
3950## <summary>
3951## Domain allowed access.
3952## </summary>
3953## </param>
3954#
3955interface(`userdom_read_inherited_user_home_content_files',`
3956 gen_require(`
3957 attribute user_home_type;
3958 ')
3959
3960 allow $1 user_home_type:file { getattr read };
3961')
3962
3963########################################
3964## <summary>
3965## Append files inherited
3966## in a user home subdirectory.
3967## </summary>
3968## <param name="domain">
3969## <summary>
3970## Domain allowed access.
3971## </summary>
3972## </param>
3973#
3974interface(`userdom_inherit_append_user_home_content_files',`
3975 gen_require(`
3976 type user_home_t;
3977 ')
3978
3979 allow $1 user_home_t:file { getattr append };
3980')
3981
3982########################################
3983## <summary>
3984## Append files inherited
3985## in a user tmp files.
3986## </summary>
3987## <param name="domain">
3988## <summary>
3989## Domain allowed access.
3990## </summary>
3991## </param>
3992#
3993interface(`userdom_inherit_append_user_tmp_files',`
3994 gen_require(`
3995 type user_tmp_t;
3996 ')
3997
3998 allow $1 user_tmp_t:file { getattr append };
3999')
4000
4001######################################
4002## <summary>
4003## Read audio files in the users homedir.
4004## </summary>
4005## <param name="domain">
4006## <summary>
4007## Domain allowed access.
4008## </summary>
4009## </param>
4010## <rolecap/>
4011#
4012interface(`userdom_read_home_audio_files',`
4013 gen_require(`
4014 type audio_home_t;
4015 ')
4016
4017 userdom_search_user_home_dirs($1)
4018 allow $1 audio_home_t:dir list_dir_perms;
4019 read_files_pattern($1, audio_home_t, audio_home_t)
4020 read_lnk_files_pattern($1, audio_home_t, audio_home_t)
4021')
4022
4023########################################
4024## <summary>
4025## Read system SSL certificates in the users homedir.
4026## </summary>
4027## <param name="domain">
4028## <summary>
4029## Domain allowed access.
4030## </summary>
4031## </param>
4032## <rolecap/>
4033#
4034interface(`userdom_read_home_certs',`
4035 gen_require(`
4036 type home_cert_t;
4037 ')
4038
4039 userdom_search_user_home_dirs($1)
4040 allow $1 home_cert_t:dir list_dir_perms;
4041 read_files_pattern($1, home_cert_t, home_cert_t)
4042 read_lnk_files_pattern($1, home_cert_t, home_cert_t)
4043')
4044
4045########################################
4046## <summary>
4047## dontaudit Search getatrr /root files
4048## </summary>
4049## <param name="domain">
4050## <summary>
4051## Domain allowed access.
4052## </summary>
4053## </param>
4054#
4055interface(`userdom_dontaudit_getattr_admin_home_files',`
4056 gen_require(`
4057 type admin_home_t;
4058 ')
4059
4060 dontaudit $1 admin_home_t:file getattr;
4061')
4062
4063########################################
4064## <summary>
4065## dontaudit read /root lnk files
4066## </summary>
4067## <param name="domain">
4068## <summary>
4069## Domain allowed access.
4070## </summary>
4071## </param>
4072#
4073interface(`userdom_dontaudit_read_admin_home_lnk_files',`
4074 gen_require(`
4075 type admin_home_t;
4076 ')
4077
4078 dontaudit $1 admin_home_t:lnk_file read;
4079')
4080
4081########################################
4082## <summary>
4083## dontaudit read /root files
4084## </summary>
4085## <param name="domain">
4086## <summary>
4087## Domain allowed access.
4088## </summary>
4089## </param>
4090#
4091interface(`userdom_dontaudit_read_admin_home_files',`
4092 gen_require(`
4093 type admin_home_t;
4094 ')
4095
4096 dontaudit $1 admin_home_t:file read_file_perms;
4097')
4098
4099########################################
4100## <summary>
4101## Create, read, write, and delete user
4102## temporary chr files.
4103## </summary>
4104## <param name="domain">
4105## <summary>
4106## Domain allowed access.
4107## </summary>
4108## </param>
4109#
4110interface(`userdom_manage_user_tmp_chr_files',`
4111 gen_require(`
4112 type user_tmp_t;
4113 ')
4114
4115 manage_chr_files_pattern($1, user_tmp_t, user_tmp_t)
4116 files_search_tmp($1)
4117')
4118
4119########################################
4120## <summary>
4121## Create, read, write, and delete user
4122## temporary blk files.
4123## </summary>
4124## <param name="domain">
4125## <summary>
4126## Domain allowed access.
4127## </summary>
4128## </param>
4129#
4130interface(`userdom_manage_user_tmp_blk_files',`
4131 gen_require(`
4132 type user_tmp_t;
4133 ')
4134
4135 manage_blk_files_pattern($1, user_tmp_t, user_tmp_t)
4136 files_search_tmp($1)
4137')
4138
4139########################################
4140## <summary>
4141## Dontaudit attempt to set attributes on user temporary directories.
4142## </summary>
4143## <param name="domain">
4144## <summary>
4145## Domain allowed access.
4146## </summary>
4147## </param>
4148#
4149interface(`userdom_dontaudit_setattr_user_tmp',`
4150 gen_require(`
4151 type user_tmp_t;
4152 ')
4153
4154 dontaudit $1 user_tmp_t:dir setattr;
4155')
4156
4157########################################
4158## <summary>
4159## Write all inherited users files in /tmp
4160## </summary>
4161## <param name="domain">
4162## <summary>
4163## Domain allowed access.
4164## </summary>
4165## </param>
4166#
4167interface(`userdom_write_inherited_user_tmp_files',`
4168 gen_require(`
4169 type user_tmp_t;
4170 ')
4171
4172 allow $1 user_tmp_t:file write;
4173')
4174
4175########################################
4176## <summary>
4177## Delete all users files in /tmp
4178## </summary>
4179## <param name="domain">
4180## <summary>
4181## Domain allowed access.
4182## </summary>
4183## </param>
4184#
4185interface(`userdom_delete_user_tmp_files',`
4186 gen_require(`
4187 type user_tmp_t;
4188 ')
4189
4190 allow $1 user_tmp_t:file delete_file_perms;
4191')
4192
4193########################################
4194## <summary>
4195## Delete user tmpfs files.
4196## </summary>
4197## <param name="domain">
4198## <summary>
4199## Domain allowed access.
4200## </summary>
4201## </param>
4202#
4203interface(`userdom_delete_user_tmpfs_files',`
4204 gen_require(`
4205 type user_tmpfs_t;
4206 ')
4207
4208 allow $1 user_tmpfs_t:file delete_file_perms;
4209')
4210
4211########################################
4212## <summary>
4213## Read/Write unpriviledged user SysV shared
4214## memory segments.
4215## </summary>
4216## <param name="domain">
4217## <summary>
4218## Domain allowed access.
4219## </summary>
4220## </param>
4221#
4222interface(`userdom_rw_unpriv_user_shared_mem',`
4223 gen_require(`
4224 attribute unpriv_userdomain;
4225 ')
4226
4227 allow $1 unpriv_userdomain:shm rw_shm_perms;
4228')
4229
4230########################################
4231## <summary>
4232## Do not audit attempts to search user
4233## temporary directories.
4234## </summary>
4235## <param name="domain">
4236## <summary>
4237## Domain to not audit.
4238## </summary>
4239## </param>
4240#
4241interface(`userdom_dontaudit_search_user_tmp',`
4242 gen_require(`
4243 type user_tmp_t;
4244 ')
4245
4246 dontaudit $1 user_tmp_t:dir search_dir_perms;
4247')
4248
4249########################################
4250## <summary>
4251## Execute a file in a user home directory
4252## in the specified domain.
4253## </summary>
4254## <desc>
4255## <p>
4256## Execute a file in a user home directory
4257## in the specified domain.
4258## </p>
4259## <p>
4260## No interprocess communication (signals, pipes,
4261## etc.) is provided by this interface since
4262## the domains are not owned by this module.
4263## </p>
4264## </desc>
4265## <param name="domain">
4266## <summary>
4267## Domain allowed access.
4268## </summary>
4269## </param>
4270## <param name="target_domain">
4271## <summary>
4272## The type of the new process.
4273## </summary>
4274## </param>
4275#
4276interface(`userdom_domtrans_user_home',`
4277 gen_require(`
4278 type user_home_t;
4279 ')
4280
4281 read_lnk_files_pattern($1, user_home_t, user_home_t)
4282 domain_transition_pattern($1, user_home_t, $2)
4283 type_transition $1 user_home_t:process $2;
4284')
4285
4286########################################
4287## <summary>
4288## Execute a file in a user tmp directory
4289## in the specified domain.
4290## </summary>
4291## <desc>
4292## <p>
4293## Execute a file in a user tmp directory
4294## in the specified domain.
4295## </p>
4296## <p>
4297## No interprocess communication (signals, pipes,
4298## etc.) is provided by this interface since
4299## the domains are not owned by this module.
4300## </p>
4301## </desc>
4302## <param name="domain">
4303## <summary>
4304## Domain allowed access.
4305## </summary>
4306## </param>
4307## <param name="target_domain">
4308## <summary>
4309## The type of the new process.
4310## </summary>
4311## </param>
4312#
4313interface(`userdom_domtrans_user_tmp',`
4314 gen_require(`
4315 type user_tmp_t;
4316 ')
4317
4318 files_search_tmp($1)
4319 read_lnk_files_pattern($1, user_tmp_t, user_tmp_t)
4320 domain_transition_pattern($1, user_tmp_t, $2)
4321 type_transition $1 user_tmp_t:process $2;
4322')