]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - refpolicy/policy/modules/system/userdomain.if
silly formatting fix
[people/stevee/selinux-policy.git] / refpolicy / policy / modules / system / userdomain.if
CommitLineData
490639cd 1## <summary>Policy for user domains</summary>
b16c6b8c 2
8fd36732
CP
3#######################################
4## <summary>
5## The template containing rules common to unprivileged
6## users and administrative users.
7## </summary>
8## <desc>
9## <p>
10## This template creates a user domain, types, and
11## rules for the user's tty, pty, home directories,
12## tmp, and tmpfs files.
13## </p>
14## <p>
15## This generally should not be used, rather the
16## unpriv_user_template or admin_user_template should
17## be used.
18## </p>
19## </desc>
20## <param name="userdomain_prefix">
21## The prefix of the user domain (e.g., user
22## is the prefix for user_t).
23## </param>
b16c6b8c 24#
8fd36732 25template(`base_user_template',`
b16c6b8c 26
0c73cd25
CP
27 attribute $1_file_type;
28
29 type $1_t, userdomain;
c9428d33
CP
30 domain_type($1_t)
31 corecmd_shell_entry_type($1_t)
0c73cd25
CP
32 role $1_r types $1_t;
33 allow system_r $1_r;
34
35 # user pseudoterminal
36 type $1_devpts_t;
0fd9dc55 37 term_user_pty($1_t,$1_devpts_t)
0c73cd25
CP
38
39 # type for contents of home directory
40 type $1_home_t, $1_file_type, home_type;
8fd36732 41 files_type($1_home_t)
0c73cd25
CP
42
43 # type of home directory
44 type $1_home_dir_t, home_dir_type, home_type;
8fd36732 45 files_type($1_home_t)
0c73cd25
CP
46
47 type $1_tmp_t, $1_file_type;
c9428d33 48 files_tmp_file($1_tmp_t)
0c73cd25
CP
49
50 type $1_tmpfs_t;
c9428d33 51 files_tmpfs_file($1_tmpfs_t)
0c73cd25
CP
52
53 type $1_tty_device_t;
0fd9dc55 54 term_tty($1_t,$1_tty_device_t)
0c73cd25
CP
55
56 ##############################
57 #
58 # Local policy
59 #
60
61 allow $1_t self:capability { setgid chown fowner };
62 dontaudit $1_t self:capability { sys_nice fsetid };
63 allow $1_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem dyntransition };
64 allow $1_t self:process { ptrace setfscreate };
65 allow $1_t self:fd use;
cc41a97c
CP
66 allow $1_t self:fifo_file rw_file_perms;
67 allow $1_t self:unix_dgram_socket create_socket_perms;
0fd9dc55 68 allow $1_t self:unix_stream_socket create_stream_socket_perms;
0c73cd25
CP
69 allow $1_t self:unix_dgram_socket sendto;
70 allow $1_t self:unix_stream_socket connectto;
cc41a97c
CP
71 allow $1_t self:shm create_shm_perms;
72 allow $1_t self:sem create_sem_perms;
73 allow $1_t self:msgq create_msgq_perms;
0c73cd25
CP
74 allow $1_t self:msg { send receive };
75 dontaudit $1_t self:socket create;
76 # Irrelevant until we have labeled networking.
77 #allow $1_t self:udp_socket { sendto recvfrom };
78
79 # evolution and gnome-session try to create a netlink socket
80 dontaudit $1_t self:netlink_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown };
81 dontaudit $1_t self:netlink_route_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown nlmsg_read nlmsg_write };
82
83 # execute files in the home directory
cc41a97c 84 allow $1_t $1_home_t:file { rx_file_perms execute_no_trans };
0c73cd25
CP
85
86 # full control of the home directory
cc41a97c
CP
87 allow $1_t $1_home_t:file { create_file_perms relabelfrom relabelto };
88 allow $1_t $1_home_t:lnk_file { create_lnk_perms relabelfrom relabelto };
89 allow $1_t $1_home_t:dir { create_dir_perms relabelfrom relabelto };
90 allow $1_t $1_home_t:sock_file { create_file_perms relabelfrom relabelto };
91 allow $1_t $1_home_t:fifo_file { create_file_perms relabelfrom relabelto };
92 allow $1_t $1_home_dir_t:dir create_dir_perms;
93 type_transition $1_t $1_home_dir_t:{ dir notdevfile_class_set } $1_home_t;
0c73cd25 94
cc41a97c 95 allow $1_t $1_tmp_t:file { rx_file_perms execute_no_trans };
0c73cd25
CP
96
97 # Bind to a Unix domain socket in /tmp.
98 # cjp: this is combination is not checked and should be removed
99 allow $1_t $1_tmp_t:unix_stream_socket name_bind;
100
cc41a97c
CP
101 allow $1_t $1_tmpfs_t:dir rw_dir_perms;
102 allow $1_t $1_tmpfs_t:file create_file_perms;
103 allow $1_t $1_tmpfs_t:lnk_file create_lnk_perms;
104 allow $1_t $1_tmpfs_t:sock_file create_file_perms;
105 allow $1_t $1_tmpfs_t:fifo_file create_file_perms;
0fd9dc55 106 fs_create_tmpfs_data($1_t,$1_tmpfs_t, { dir notdevfile_class_set } )
0c73cd25 107
cc41a97c 108 allow $1_t $1_tty_device_t:chr_file { setattr rw_file_perms };
0c73cd25
CP
109
110 allow $1_t unpriv_userdomain:fd use;
111
112 # Instantiate derived domains for a number of programs.
113 # These derived domains encode both information about the calling
114 # user domain and the program, and allow us to maintain separation
115 # between different instances of the program being run by different
116 # user domains.
117 per_userdomain_templates($1)
118
119 kernel_read_kernel_sysctl($1_t)
5e0da6a0 120 selinux_get_fs_mount($1_t)
0c73cd25
CP
121 # Very permissive allowing every domain to see every type:
122 kernel_get_sysvipc_info($1_t)
123 # Find CDROM devices:
124 kernel_read_device_sysctl($1_t)
ebdc3b79
CP
125
126 dev_rw_power_management($1_t)
0c73cd25 127 # GNOME checks for usb and other devices:
8bd67899 128 dev_rw_usbfs($1_t)
0fd9dc55
CP
129
130 corenet_tcp_sendrecv_all_if($1_t)
131 corenet_raw_sendrecv_all_if($1_t)
132 corenet_udp_sendrecv_all_if($1_t)
133 corenet_tcp_sendrecv_all_nodes($1_t)
134 corenet_raw_sendrecv_all_nodes($1_t)
135 corenet_udp_sendrecv_all_nodes($1_t)
136 corenet_tcp_sendrecv_all_ports($1_t)
137 corenet_udp_sendrecv_all_ports($1_t)
138 corenet_tcp_bind_all_nodes($1_t)
139 corenet_udp_bind_all_nodes($1_t)
0c73cd25 140 # allow port_t name binding for UDP because it is not very usable otherwise
0fd9dc55 141 corenet_udp_bind_generic_port($1_t)
0c73cd25 142
f0c985ca
KM
143 dev_read_input($1_t)
144 dev_read_misc($1_t)
145 dev_write_misc($1_t)
146 dev_write_snd_dev($1_t)
147 dev_read_snd_dev($1_t)
148 dev_read_snd_mixer_dev($1_t)
149 dev_write_snd_mixer_dev($1_t)
150 dev_read_rand($1_t)
151 dev_read_urand($1_t)
0c73cd25 152 # open office is looking for the following
f0c985ca
KM
153 dev_getattr_agp_dev($1_t)
154 dev_dontaudit_rw_dri_dev($1_t)
0c73cd25 155
763c441e 156 fs_get_all_fs_quotas($1_t)
0fd9dc55 157 fs_getattr_all_fs($1_t)
ab940a4c 158 fs_search_auto_mountpoints($1_t)
0c73cd25
CP
159
160 # for eject
0fd9dc55 161 storage_getattr_fixed_disk($1_t)
0c73cd25 162
c9428d33
CP
163 auth_read_login_records($1_t)
164 auth_dontaudit_write_login_records($1_t)
165 auth_run_pam($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
166 auth_run_utempter($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
0c73cd25 167
c9428d33
CP
168 corecmd_exec_bin($1_t)
169 corecmd_exec_sbin($1_t)
170 corecmd_exec_ls($1_t)
0c73cd25 171
c9428d33
CP
172 domain_exec_all_entry_files($1_t)
173 domain_use_wide_inherit_fd($1_t)
0c73cd25 174
8fd36732
CP
175 files_exec_etc_files($1_t)
176 files_read_usr_src_files($1_t)
ebdc3b79 177 files_search_generic_locks($1_t)
0c73cd25
CP
178
179 # Caused by su - init scripts
c9428d33 180 init_dontaudit_use_script_pty($1_t)
0c73cd25 181
c9428d33
CP
182 libs_use_ld_so($1_t)
183 libs_use_shared_libs($1_t)
184 libs_exec_ld_so($1_t)
185 libs_exec_lib_files($1_t)
0c73cd25 186
c9428d33 187 logging_dontaudit_getattr_all_logs($1_t)
0c73cd25
CP
188
189 miscfiles_read_localization($1_t)
c9428d33 190 miscfiles_rw_man_cache($1_t)
0c73cd25 191
5e0da6a0 192 seutil_run_newrole($1_t,$1_r,{ $1_devpts_t $1_tty_device_t })
0c73cd25 193
c9428d33 194 mta_rw_spool($1_t)
0c73cd25 195
34c8fabe 196 tunable_policy(`allow_execmem',`
0c73cd25
CP
197 # Allow loading DSOs that require executable stack.
198 allow $1_t self:process execmem;
34c8fabe 199 ')
0c73cd25 200
34c8fabe 201 tunable_policy(`use_nfs_home_dirs',`
0fd9dc55 202 fs_manage_nfs_dirs($1_t)
763c441e 203 fs_manage_nfs_files($1_t)
0fd9dc55 204 fs_manage_nfs_symlinks($1_t)
763c441e
CP
205 fs_manage_nfs_named_sockets($1_t)
206 fs_manage_nfs_named_pipes($1_t)
207 fs_execute_nfs_files($1_t)
34c8fabe 208 ')
0c73cd25 209
34c8fabe 210 tunable_policy(`use_samba_home_dirs',`
0fd9dc55
CP
211 fs_manage_cifs_dirs($1_t)
212 fs_manage_cifs_files($1_t)
213 fs_manage_cifs_symlinks($1_t)
214 fs_manage_cifs_named_sockets($1_t)
215 fs_manage_cifs_named_pipes($1_t)
216 fs_execute_cifs_files($1_t)
34c8fabe 217 ')
0c73cd25 218
34c8fabe 219 tunable_policy(`user_direct_mouse',`
f0c985ca 220 dev_read_mouse($1_t)
34c8fabe 221 ')
0c73cd25 222
34c8fabe 223 tunable_policy(`user_ttyfile_stat',`
0fd9dc55 224 term_getattr_all_user_ttys($1_t)
34c8fabe 225 ')
0c73cd25 226
ab940a4c
CP
227 optional_policy(`nis.te',`
228 nis_use_ypbind($1_t)
229 ')
230
0c73cd25 231 optional_policy(`usermanage.te',`
c9428d33
CP
232 usermanage_run_chfn($1_t,$1_r,{ $1_devpts_t $1_tty_device_t })
233 usermanage_run_passwd($1_t,$1_r,{ $1_devpts_t $1_tty_device_t })
0c73cd25
CP
234 ')
235
236 ifdef(`TODO',`
237
238 # When the user domain runs ps, there will be a number of access
239 # denials when ps tries to search /proc. Do not audit these denials.
240 dontaudit $1_t domain:dir r_dir_perms;
241 dontaudit $1_t domain:notdevfile_class_set r_file_perms;
242 dontaudit $1_t domain:process { getattr getsession };
243 #
244 # Cups daemon running as user tries to write /etc/printcap
245 #
246 dontaudit $1_t usr_t:file setattr;
247
0c73cd25
CP
248 # Check to see if cdrom is mounted
249 allow $1_t mnt_t:dir { getattr search };
250
251 #
252 # Added to allow reading of cdrom
253 #
254 allow $1_t rpc_pipefs_t:dir getattr;
255 allow $1_t nfsd_fs_t:dir getattr;
256 allow $1_t binfmt_misc_fs_t:dir getattr;
257
258 # /initrd is left mounted, various programs try to look at it
259 dontaudit $1_t ramfs_t:dir getattr;
260
3eed1090 261 tunable_policy(`read_default_t',`
0c73cd25
CP
262 allow $1_t default_t:dir r_dir_perms;
263 allow $1_t default_t:notdevfile_class_set r_file_perms;
3eed1090 264 ')
0c73cd25
CP
265
266 #
267 # Running ifconfig as a user generates the following
268 #
269 dontaudit $1_t sysctl_net_t:dir search;
270
271 dontaudit $1_t default_context_t:dir search;
272
273 r_dir_file($1_t, usercanread)
274
3eed1090 275 tunable_policy(`allow_execmod',`
0c73cd25
CP
276 # Allow text relocations on system shared libraries, e.g. libGL.
277 allow $1_t texrel_shlib_t:file execmod;
3eed1090 278 ')
0c73cd25
CP
279
280 allow $1_t fs_type:dir getattr;
281
282 # old "file_browse_domain":
283 # Regular files/directories that are not security sensitive
284 dontaudit $1_t file_type - secure_file_type:dir_file_class_set getattr;
285 dontaudit $1_t file_type - secure_file_type:dir { read search };
286 # /dev
287 dontaudit $1_t dev_fs:dir_file_class_set getattr;
288 dontaudit $1_t dev_fs:dir { read search };
289 # /proc
290 dontaudit $1_t sysctl_t:dir_file_class_set getattr;
291 dontaudit $1_t proc_fs:dir { read search };
292
0c73cd25 293 can_exec($1_t, { removable_t noexattrfile } )
3eed1090
CP
294
295 tunable_policy(`user_rw_noexattrfile',`
0c73cd25
CP
296 create_dir_file($1_t, noexattrfile)
297 create_dir_file($1_t, removable_t)
298 # Write floppies
ebdc3b79
CP
299 storage_raw_read_removable_device($1_t)
300 storage_raw_write_removable_device($1_t)
301 # cjp: what does this have to do with removable devices?
0c73cd25 302 allow $1_t usbtty_device_t:chr_file write;
3eed1090 303 ',`
0c73cd25
CP
304 r_dir_file($1_t, noexattrfile)
305 r_dir_file($1_t, removable_t)
306 allow $1_t removable_device_t:blk_file r_file_perms;
3eed1090
CP
307 ')
308
0c73cd25
CP
309 allow $1_t usbtty_device_t:chr_file read;
310
311 can_exec($1_t, noexattrfile)
312
313 # for running TeX programs
314 r_dir_file($1_t, tetex_data_t)
315 can_exec($1_t, tetex_data_t)
316
0c73cd25
CP
317 can_resmgrd_connect($1_t)
318
0c73cd25
CP
319 # Grant permissions to access the system DBus
320 ifdef(`dbusd.te', `
321 dbusd_client(system, $1)
322 can_network_server_tcp($1_dbusd_t)
323 allow $1_dbusd_t reserved_port_t:tcp_socket name_bind;
324
325 allow $1_t system_dbusd_t:dbus { send_msg acquire_svc };
326 dbusd_client($1, $1)
327 allow $1_t $1_dbusd_t:dbus { send_msg acquire_svc };
328 dbusd_domain($1)
329 ifdef(`hald.te', `
330 allow $1_t hald_t:dbus send_msg;
331 allow hald_t $1_t:dbus send_msg;
332 ')
333 ')
334
335 # Gnome pannel binds to the following
336 ifdef(`cups.te', `
cc41a97c 337 allow $1_t { cupsd_etc_t cupsd_rw_etc_t }:file r_file_perms;
0c73cd25
CP
338 ')
339
340 # Connect to inetd.
341 ifdef(`inetd.te', `
342 can_tcp_connect($1_t, inetd_t)
343 can_udp_send($1_t, inetd_t)
344 can_udp_send(inetd_t, $1_t)
345 ')
346
347 # Connect to portmap.
348 ifdef(`portmap.te', `can_tcp_connect($1_t, portmap_t)')
349
350 # Inherit and use sockets from inetd
351 ifdef(`inetd.te', `
352 allow $1_t inetd_t:fd use;
353 allow $1_t inetd_t:tcp_socket rw_stream_socket_perms;
354 ')
355
356 ifdef(`xserver.te', `
357 # for /tmp/.ICE-unix
358 file_type_auto_trans($1_t, xdm_xserver_tmp_t, $1_tmp_t, sock_file)
359 allow $1_t xserver_misc_device_t:{ chr_file blk_file } rw_file_perms;
360 ')
361
362 ifdef(`xdm.te', `
363 # Connect to the X server run by the X Display Manager.
364 can_unix_connect($1_t, xdm_t)
365 allow $1_t xdm_tmp_t:sock_file rw_file_perms;
366 allow $1_t xdm_tmp_t:dir r_dir_perms;
cc41a97c 367 allow $1_t xdm_tmp_t:file r_file_perms;
0c73cd25
CP
368 allow $1_t xdm_xserver_tmp_t:sock_file { read write };
369 allow $1_t xdm_xserver_tmp_t:dir search;
370 allow $1_t xdm_xserver_t:unix_stream_socket connectto;
371 # certain apps want to read xdm.pid file
372 r_dir_file($1_t, xdm_var_run_t)
cc41a97c 373 allow $1_t xdm_var_lib_t:file r_file_perms;
0c73cd25
CP
374 allow xdm_t $1_home_dir_t:dir getattr;
375 ifdef(`xauth.te', `
376 file_type_auto_trans(xdm_t, $1_home_dir_t, $1_xauth_home_t, file)
377 ')
378
379 # for shared memory
380 allow xdm_xserver_t $1_tmpfs_t:file { read write };
381
382 ')
383
384 ifdef(`rpcd.te', `
385 create_dir_file($1_t, nfsd_rw_t)
386 ')
387
388 ifdef(`cardmgr.te', `
389 # to allow monitoring of pcmcia status
cc41a97c 390 allow $1_t cardmgr_var_run_t:file r_file_perms;
0c73cd25
CP
391 ')
392
393 #
394 # Allow graphical boot to check battery lifespan
395 #
396 ifdef(`apmd.te', `
397 allow $1_t apmd_t:unix_stream_socket connectto;
398 allow $1_t apmd_var_run_t:sock_file write;
399 ')
400
0c73cd25
CP
401 ifdef(`pamconsole.te', `
402 allow $1_t pam_var_console_t:dir search;
403 ')
404
405 ') dnl endif TODO
b16c6b8c
CP
406
407')dnl end base_user_domain macro
408
8fd36732
CP
409#######################################
410## <summary>
411## The template for creating a unprivileged user.
412## </summary>
413## <desc>
414## <p>
415## This template creates a user domain, types, and
416## rules for the user's tty, pty, home directories,
417## tmp, and tmpfs files.
418## </p>
419## </desc>
420## <param name="userdomain_prefix">
421## The prefix of the user domain (e.g., user
422## is the prefix for user_t).
423## </param>
b16c6b8c 424#
8fd36732 425template(`unpriv_user_template', `
0c73cd25
CP
426 ##############################
427 #
428 # Declarations
429 #
b16c6b8c 430
0c73cd25 431 # Inherit rules for ordinary users.
8fd36732 432 base_user_template($1)
b16c6b8c 433
0c73cd25 434 typeattribute $1_t unpriv_userdomain; #, web_client_domain, nscd_client_domain;
c9428d33 435 domain_wide_inherit_fd($1_t)
b16c6b8c 436
0c73cd25
CP
437 #typeattribute $1_devpts_t userpty_type, user_tty_type;
438 #typeattribute $1_home_dir_t user_home_dir_type;
439 #typeattribute $1_home_t user_home_type;
b16c6b8c 440
ab940a4c 441 typeattribute $1_tmp_t user_tmpfile;
b16c6b8c 442
ebdc3b79 443 typeattribute $1_tty_device_t user_ttynode;
b16c6b8c 444
0c73cd25
CP
445 ##############################
446 #
447 # Local policy
448 #
449
450 allow $1_t $1_devpts_t:chr_file { setattr ioctl read getattr lock write append };
0fd9dc55 451 term_create_pty($1_t,$1_devpts_t)
0c73cd25
CP
452
453 # Rules used to associate a homedir as a mountpoint
454 allow $1_home_t self:filesystem associate;
455 allow $1_file_type $1_home_t:filesystem associate;
456
457 # user temporary files
cc41a97c
CP
458 allow $1_t $1_tmp_t:file create_file_perms;
459 allow $1_t $1_tmp_t:lnk_file create_lnk_perms;
460 allow $1_t $1_tmp_t:dir create_dir_perms;
461 allow $1_t $1_tmp_t:sock_file create_file_perms;
462 allow $1_t $1_tmp_t:fifo_file create_file_perms;
c9428d33 463 files_create_tmp_files($1_t, $1_tmp_t, { dir notdevfile_class_set })
0c73cd25
CP
464
465 # privileged home directory writers
cc41a97c
CP
466 allow privhome $1_home_t:file create_file_perms;
467 allow privhome $1_home_t:lnk_file create_lnk_perms;
468 allow privhome $1_home_t:dir create_dir_perms;
469 allow privhome $1_home_t:sock_file create_file_perms;
470 allow privhome $1_home_t:fifo_file create_file_perms;
471 type_transition privhome $1_home_dir_t:{ dir notdevfile_class_set } $1_home_t;
0c73cd25
CP
472
473 kernel_read_system_state($1_t)
474 kernel_read_network_state($1_t)
8bd67899 475 dev_read_sysfs($1_t)
0c73cd25
CP
476
477 # cjp: why?
478 bootloader_read_kernel_symbol_table($1_t)
479
480 # port access is audited even if dac would not have allowed it, so dontaudit it here
0fd9dc55 481 corenet_dontaudit_tcp_bind_all_reserved_ports($1_t)
0c73cd25 482
8fd36732 483 files_read_etc_files($1_t)
c9428d33
CP
484 files_list_home($1_t)
485 files_read_usr_files($1_t)
0c73cd25 486
c9428d33 487 init_read_script_pid($1_t)
0c73cd25
CP
488 # The library functions always try to open read-write first,
489 # then fall back to read-only if it fails.
c9428d33 490 init_dontaudit_write_script_pid($1_t)
0c73cd25 491 # Stop warnings about access to /dev/console
c9428d33
CP
492 init_dontaudit_use_fd($1_t)
493 init_dontaudit_use_script_fd($1_t)
0c73cd25
CP
494
495 miscfiles_read_man_pages($1_t)
496
5e0da6a0 497 seutil_read_config($1_t)
0c73cd25
CP
498 # Allow users to execute checkpolicy without a domain transition
499 # so it can be used without privilege to write real binary policy file
5e0da6a0 500 seutil_exec_checkpol($1_t)
0c73cd25 501
34c8fabe 502 tunable_policy(`user_dmesg',`
0c73cd25 503 kernel_read_ring_buffer($1_t)
34c8fabe 504 ',`
0fd9dc55 505 kernel_dontaudit_read_ring_buffer($1_t)
34c8fabe 506 ')
0c73cd25
CP
507
508 # Allow users to run TCP servers (bind to ports and accept connection from
509 # the same domain and outside users) disabling this forces FTP passive mode
510 # and may change other protocols
34c8fabe 511 tunable_policy(`user_tcp_server',`
0fd9dc55 512 corenet_tcp_bind_generic_port($1_t)
34c8fabe 513 ')
0c73cd25 514
a7a9799d
CP
515 optional_policy(`kerberos.te',`
516 kerberos_use($1_t)
517 ')
518
0c73cd25
CP
519 # for running depmod as part of the kernel packaging process
520 optional_policy(`modutils.te',`
c9428d33 521 modutils_read_module_conf($1_t)
0c73cd25
CP
522 ')
523
524 optional_policy(`selinux.te',`
525 # for when the network connection is killed
8fd36732 526 seutil_dontaudit_signal_newrole($1_t)
0c73cd25
CP
527 ')
528
529 # Need the following rule to allow users to run vpnc
530 optional_policy(`xserver.te', `
531 corenetwork_bind_tcp_on_xserver_port($1_t)
532 ')
533
534 ifdef(`TODO',`
535
536 dontaudit $1_t boot_t:lnk_file read;
537 dontaudit $1_t boot_t:file read;
538
0c73cd25
CP
539 # do not audit read on disk devices
540 dontaudit $1_t { removable_device_t fixed_disk_device_t }:blk_file read;
541
542 ifdef(`xdm.te', `
543 allow xdm_t $1_home_t:lnk_file read;
544 allow xdm_t $1_home_t:dir search;
545 #
546 # Changing this to dontaudit should cause the .xsession-errors file to be written to /tmp
547 #
548 dontaudit xdm_t $1_home_t:file rw_file_perms;
549 ')
550
551 ifdef(`ftpd.te', `
3eed1090 552 tunable_policy(`ftp_home_dir',`
0c73cd25 553 file_type_auto_trans(ftpd_t, $1_home_dir_t, $1_home_t)
3eed1090 554 ')
0c73cd25
CP
555 ')
556
3eed1090 557 tunable_policy(`read_default_t',`
0c73cd25
CP
558 allow $1 default_t:dir r_dir_perms;
559 allow $1 default_t:notdevfile_class_set r_file_perms;
3eed1090 560 ')
0c73cd25
CP
561
562 can_exec($1_t, usr_t)
563
564 # Read directories and files with the readable_t type.
565 # This type is a general type for "world"-readable files.
566 allow $1_t readable_t:dir r_dir_perms;
567 allow $1_t readable_t:notdevfile_class_set r_file_perms;
568
569 # Stat lost+found.
570 allow $1_t lost_found_t:dir getattr;
571
572 # Read /var, /var/spool, /var/run.
573 allow $1_t var_t:dir r_dir_perms;
574 allow $1_t var_t:notdevfile_class_set r_file_perms;
575 allow $1_t var_spool_t:dir r_dir_perms;
576 allow $1_t var_spool_t:notdevfile_class_set r_file_perms;
577 allow $1_t var_run_t:dir r_dir_perms;
578 allow $1_t var_run_t:{ file lnk_file } r_file_perms;
579 allow $1_t var_lib_t:dir r_dir_perms;
580 allow $1_t var_lib_t:file { getattr read };
581
582 # Allow users to rw usb devices
3eed1090 583 tunable_policy(`user_rw_usb',`
0c73cd25 584 rw_dir_create_file($1_t,usbdevfs_t)
3eed1090 585 ',`
0c73cd25 586 r_dir_file($1_t,usbdevfs_t)
3eed1090 587 ')
0c73cd25
CP
588
589 # Do not audit write denials to /etc/ld.so.cache.
590 dontaudit $1_t ld_so_cache_t:file write;
591
592 dontaudit $1_t sysadm_home_t:file { read append };
593
594 ifdef(`syslogd.te', `
595 # Some programs that are left in $1_t will try to connect
596 # to syslogd, but we do not want to let them generate log messages.
597 # Do not audit.
598 dontaudit $1_t devlog_t:sock_file { read write };
599 dontaudit $1_t syslogd_t:unix_dgram_socket sendto;
600 ')
601
602 allow $1_t initrc_t:fifo_file write;
603
604 ifdef(`user_can_mount', `
605 #
606 # Allow users to mount file systems like floppies and cdrom
607 #
608 mount_domain($1, $1_mount, `, fs_domain')
609 r_dir_file($1_t, mnt_t)
610 allow $1_mount_t device_t:lnk_file read;
611 allow $1_mount_t removable_device_t:blk_file read;
612 allow $1_mount_t iso9660_t:filesystem relabelfrom;
613 allow $1_mount_t removable_t:filesystem { mount relabelto };
614 allow $1_mount_t removable_t:dir mounton;
615 ifdef(`xdm.te', `
616 allow $1_mount_t xdm_t:fd use;
617 allow $1_mount_t xdm_t:fifo_file { read write };
618 ')
619 ')
620
621 ') dnl end TODO
b16c6b8c 622')
4d8ddf9a 623
8fd36732
CP
624#######################################
625## <summary>
626## The template for creating an administrative user.
627## </summary>
628## <desc>
629## <p>
630## This template creates a user domain, types, and
631## rules for the user's tty, pty, home directories,
632## tmp, and tmpfs files.
633## </p>
634## </desc>
635## <secdesc>
636## The privileges given to administrative users are:
637## <ul>
638## <li>Raw disk access</li>
639## <li>Set all sysctls</li>
640## <li>All kernel ring buffer controls</li>
641## <li>Set SELinux enforcement mode (enforcing/permissive)</li>
642## <li>Set SELinux booleans</li>
643## <li>Relabel all files but shadow</li>
644## <li>Create, read, write, and delete all files but shadow</li>
645## <li>Manage source and binary format SELinux policy</li>
646## <li>Run insmod</li>
647## </ul>
648## </secdesc>
649## <param name="userdomain_prefix">
650## The prefix of the user domain (e.g., sysadm
651## is the prefix for sysadm_t).
652## </param>
4d8ddf9a 653#
8fd36732 654template(`admin_user_template',`
0c73cd25
CP
655 ##############################
656 #
657 # Declarations
658 #
659
660 # Inherit rules for ordinary users.
8fd36732 661 base_user_template($1)
0c73cd25
CP
662
663 typeattribute $1_t privhome; #, admin, web_client_domain, nscd_client_domain;
8bd67899 664 domain_obj_id_change_exempt($1_t)
0c73cd25
CP
665 role system_r types $1_t;
666
667 #ifdef(`direct_sysadm_daemon', `, priv_system_role')
668 #; dnl end of sysadm_t type declaration
669
670 typeattribute $1_devpts_t admin_terminal;
671
672 typeattribute $1_tty_device_t admin_terminal;
673
674 ##############################
675 #
676 # $1_t local policy
677 #
678
679 allow $1_t self:capability ~sys_module;
680 allow $1_t self:process { setexec setfscreate };
681
682 # Set password information for other users.
683 allow $1_t self:passwd { passwd chfn chsh };
684
685 # Skip authentication when pam_rootok is specified.
686 allow $1_t self:passwd rootok;
687
688 # Manipulate other users crontab.
689 allow $1_t self:passwd crontab;
690
691 # for the administrator to run TCP servers directly
692 allow $1_t self:tcp_socket { acceptfrom connectto recvfrom };
693
694 allow $1_t $1_devpts_t:chr_file { setattr ioctl read getattr lock write append };
0fd9dc55 695 term_create_pty($1_t,$1_devpts_t)
0c73cd25 696
cc41a97c
CP
697 allow $1_t $1_tmp_t:dir create_dir_perms;
698 allow $1_t $1_tmp_t:file create_file_perms;
699 allow $1_t $1_tmp_t:lnk_file create_file_perms;
700 allow $1_t $1_tmp_t:fifo_file create_file_perms;
701 allow $1_t $1_tmp_t:sock_file create_file_perms;
c9428d33 702 files_create_tmp_files($1_t, $1_tmp_t, { dir notdevfile_class_set })
0c73cd25
CP
703
704 kernel_read_system_state($1_t)
705 kernel_read_network_state($1_t)
706 kernel_read_software_raid_state($1_t)
0fd9dc55
CP
707 kernel_getattr_core($1_t)
708 kernel_getattr_message_if($1_t)
0c73cd25
CP
709 kernel_change_ring_buffer_level($1_t)
710 kernel_clear_ring_buffer($1_t)
711 kernel_read_ring_buffer($1_t)
712 kernel_get_sysvipc_info($1_t)
0fd9dc55 713 kernel_rw_all_sysctl($1_t)
8fd36732
CP
714
715 # signal unlabeled processes:
716 kernel_kill_unlabeled($1_t)
717 kernel_signal_unlabeled($1_t)
718 kernel_sigstop_unlabeled($1_t)
719 kernel_signull_unlabeled($1_t)
720 kernel_sigchld_unlabeled($1_t)
721
5e0da6a0
CP
722 selinux_set_enforce_mode($1_t)
723 selinux_set_boolean($1_t)
724 selinux_set_parameters($1_t)
0c73cd25 725 # Get security policy decisions:
5e0da6a0
CP
726 selinux_get_fs_mount($1_t)
727 selinux_validate_context($1_t)
728 selinux_compute_access_vector($1_t)
729 selinux_compute_create_context($1_t)
730 selinux_compute_relabel_context($1_t)
731 selinux_compute_user_contexts($1_t)
0c73cd25 732
0fd9dc55 733 corenet_tcp_bind_generic_port($1_t)
0c73cd25 734
f0c985ca
KM
735 dev_getattr_generic_blk_file($1_t)
736 dev_getattr_generic_chr_file($1_t)
737 dev_getattr_all_blk_files($1_t)
738 dev_getattr_all_chr_files($1_t)
0c73cd25 739
0fd9dc55
CP
740 fs_getattr_all_fs($1_t)
741 fs_set_all_quotas($1_t)
0c73cd25
CP
742
743 storage_raw_read_removable_device($1_t)
744 storage_raw_write_removable_device($1_t)
745
0fd9dc55
CP
746 term_use_console($1_t)
747 term_use_unallocated_tty($1_t)
748 term_use_all_user_ptys($1_t)
749 term_use_all_user_ttys($1_t)
0c73cd25
CP
750
751 # Manage almost all files
c9428d33 752 auth_manage_all_files_except_shadow($1_t)
0c73cd25 753 # Relabel almost all files
c9428d33 754 auth_relabel_all_files_except_shadow($1_t)
0c73cd25 755
c9428d33
CP
756 domain_setpriority_all_domains($1_t)
757 domain_read_all_domains_state($1_t)
0c73cd25
CP
758 # signal all domains:
759 domain_kill_all_domains($1_t)
760 domain_signal_all_domains($1_t)
761 domain_signull_all_domains($1_t)
762 domain_sigstop_all_domains($1_t)
763 domain_sigstop_all_domains($1_t)
764 domain_sigchld_all_domains($1_t)
765
c9428d33 766 files_exec_usr_files($1_t)
0c73cd25 767
c9428d33 768 init_use_initctl($1_t)
0c73cd25 769
c9428d33 770 logging_send_syslog_msg($1_t)
0c73cd25 771
c9428d33 772 modutils_domtrans_insmod($1_t)
0c73cd25 773
5e0da6a0 774 seutil_read_config($1_t)
0c73cd25
CP
775 # The following rule is temporary until such time that a complete
776 # policy management infrastructure is in place so that an administrator
777 # cannot directly manipulate policy files with arbitrary programs.
5e0da6a0 778 seutil_manage_src_pol($1_t)
0c73cd25
CP
779 # Violates the goal of limiting write access to checkpolicy.
780 # But presently necessary for installing the file_contexts file.
5e0da6a0 781 seutil_manage_binary_pol($1_t)
0c73cd25
CP
782
783 optional_policy(`cron.te',`
784 cron_admin_template($1)
785 ')
786
787 ifdef(`TODO',`
788
789 # Let admin stat the shadow file.
790 allow $1_t shadow_t:file getattr;
791
792 # for lsof
793 allow $1_t mtrr_device_t:file getattr;
794
795 allow $1_t serial_device:chr_file setattr;
796
797 # allow setting up tunnels
798 allow $1_t tun_tap_device_t:chr_file rw_file_perms;
799
800 allow $1_t ptyfile:chr_file getattr;
801
802 # Run programs from staff home directories.
803 # Not ideal, but typical if users want to login as both sysadm_t or staff_t.
804 can_exec($1_t, staff_home_t)
805
806 # Run admin programs that require different permissions in their own domain.
807 # These rules were moved into the appropriate program domain file.
808
809 ifdef(`startx.te', `
810 ifdef(`xserver.te', `
811 # Create files in /tmp/.X11-unix with our X servers derived
812 # tmp type rather than user_xserver_tmp_t.
813 file_type_auto_trans($1_xserver_t, xserver_tmpfile, $1_xserver_tmp_t, sock_file)
814 ')
815 ')
816
817 ifdef(`xdm.te', `
818 ifdef(`xauth.te', `
3eed1090 819 tunable_policy(`xdm_sysadm_login',`
0c73cd25
CP
820 allow xdm_t $1_home_t:lnk_file read;
821 allow xdm_t $1_home_t:dir search;
3eed1090 822 ')
0c73cd25
CP
823 allow $1_t xdm_t:fifo_file rw_file_perms;
824 ')
825 ')
826
827 #
828 # A user who is authorized for sysadm_t may nonetheless have
829 # a home directory labeled with user_home_t if the user is expected
830 # to login in either user_t or sysadm_t. Hence, the derived domains
831 # for programs need to be able to access user_home_t.
832 #
4d8ddf9a 833
0c73cd25
CP
834 # Allow our gph domain to write to .xsession-errors.
835 ifdef(`gnome-pty-helper.te', `
836 allow $1_gph_t user_home_dir_type:dir rw_dir_perms;
837 allow $1_gph_t user_home_type:file create_file_perms;
838 ')
4d8ddf9a 839
0c73cd25
CP
840 # for the administrator to run TCP servers directly
841 allow $1_t kernel_t:tcp_socket recvfrom;
4d8ddf9a 842
0c73cd25
CP
843 # Connect data port to ftpd.
844 ifdef(`ftpd.te', `can_tcp_connect(ftpd_t, $1_t)')
4d8ddf9a 845
0c73cd25
CP
846 # Connect second port to rshd.
847 ifdef(`rshd.te', `can_tcp_connect(rshd_t, $1_t)')
848
849 # Allow MAKEDEV to work
850 allow $1_t device_t:dir rw_dir_perms;
851 allow $1_t device_type:{ blk_file chr_file } { create unlink rename };
852 allow $1_t device_t:lnk_file { create read };
4d8ddf9a 853
0c73cd25
CP
854 # for lsof
855 allow $1_t domain:socket_class_set getattr;
856 allow $1_t eventpollfs_t:file getattr;
857 ') dnl endif TODO
4d8ddf9a 858')
490639cd 859
4bf4ed9e 860########################################
ab940a4c 861## <summary>
414e4151
CP
862## Execute a shell in all user domains. This
863## is an explicit transition, requiring the
864## caller to use setexeccon().
ab940a4c 865## </summary>
414e4151
CP
866## <param name="domain">
867## The type of the process performing this action.
868## </param>
4bf4ed9e 869#
199895e2 870interface(`userdom_spec_domtrans_all_users',`
21871a5c
CP
871 gen_require(`
872 attribute userdomain;
873 ')
874
c9428d33 875 corecmd_shell_spec_domtrans($1,userdomain)
4bf4ed9e
CP
876')
877
21871a5c 878########################################
ab940a4c 879## <summary>
414e4151
CP
880## Execute a shell in all unprivileged user domains. This
881## is an explicit transition, requiring the
882## caller to use setexeccon().
ab940a4c 883## </summary>
414e4151
CP
884## <param name="domain">
885## The type of the process performing this action.
886## </param>
21871a5c 887#
199895e2 888interface(`userdom_spec_domtrans_unpriv_users',`
21871a5c
CP
889 gen_require(`
890 attribute unpriv_userdomain;
891 ')
892
893 corecmd_shell_spec_domtrans($1,unpriv_userdomain)
4bf4ed9e
CP
894')
895
d490eb6b 896########################################
ab940a4c 897## <summary>
414e4151 898## Execute a shell in the sysadm domain.
ab940a4c 899## </summary>
414e4151
CP
900## <param name="domain">
901## The type of the process performing this action.
902## </param>
d490eb6b 903#
199895e2 904interface(`userdom_shell_domtrans_sysadm',`
c98340cf
CP
905 ifdef(`targeted_policy',`
906 #cjp: need to doublecheck this one
907 unconfined_domtrans_shell($1)
908 ',`
909 gen_require(`
910 type sysadm_t;
911 ')
0c73cd25 912
c98340cf
CP
913 corecmd_domtrans_shell($1,sysadm_t)
914 ')
d490eb6b
CP
915')
916
fd89e19f
CP
917########################################
918## <summary>
919## Read files in the staff users home directory.
920## </summary>
921## <param name="domain">
922## The type of the process performing this action.
923## </param>
924#
925interface(`userdom_read_staff_home_files',`
926 gen_require(`
927 type staff_home_dir_t, staff_home_t;
928 class dir r_dir_perms;
929 class file r_file_perms;
930 class lnk_file r_file_perms;
931 ')
932
933 files_search_home($1)
934 allow $1 { staff_home_dir_t staff_home_t }:dir r_dir_perms;
935 allow $1 staff_home_t:{ file lnk_file } r_file_perms;
936')
937
daa0e0b0 938########################################
ab940a4c 939## <summary>
414e4151 940## Read and write sysadm ttys.
ab940a4c 941## </summary>
414e4151
CP
942## <param name="domain">
943## The type of the process performing this action.
944## </param>
490639cd 945#
199895e2 946interface(`userdom_use_sysadm_tty',`
c98340cf
CP
947 ifdef(`targeted_policy',`
948 term_use_unallocated_tty($1)
949 ',`
950 gen_require(`
951 type sysadm_tty_device_t;
952 class chr_file rw_term_perms;
953 ')
fd89e19f 954
c98340cf
CP
955 dev_list_all_dev_nodes($1)
956 term_list_ptys($1)
957 allow $1 sysadm_tty_device_t:chr_file rw_term_perms;
958 ')
fd89e19f
CP
959')
960
961########################################
962## <summary>
963## Read and write sysadm ptys.
964## </summary>
965## <param name="domain">
966## The type of the process performing this action.
967## </param>
968#
969interface(`userdom_use_sysadm_pty',`
c98340cf
CP
970 ifdef(`targeted_policy',`
971 term_use_generic_pty($1)
972 ',`
973 gen_require(`
974 type sysadm_devpts_t;
975 class chr_file rw_term_perms;
976 ')
0c73cd25 977
c98340cf
CP
978 dev_list_all_dev_nodes($1)
979 term_list_ptys($1)
980 allow $1 sysadm_devpts_t:chr_file rw_term_perms;
981 ')
daa0e0b0
CP
982')
983
0404a390 984########################################
ab940a4c 985## <summary>
414e4151 986## Read and write sysadm ttys and ptys.
ab940a4c 987## </summary>
414e4151
CP
988## <param name="domain">
989## The type of the process performing this action.
990## </param>
0404a390 991#
199895e2 992interface(`userdom_use_sysadm_terms',`
c98340cf
CP
993 userdom_use_sysadm_tty($1)
994 userdom_use_sysadm_pty($1)
daa0e0b0
CP
995')
996
763c441e 997########################################
ab940a4c 998## <summary>
414e4151 999## Do not audit attempts to use admin ttys and ptys.
ab940a4c 1000## </summary>
414e4151
CP
1001## <param name="domain">
1002## The type of the process performing this action.
1003## </param>
763c441e 1004#
199895e2 1005interface(`userdom_dontaudit_use_sysadm_terms',`
c98340cf
CP
1006 ifdef(`targeted_policy',`
1007 term_dontaudit_use_generic_pty($1)
1008 ',`
1009 gen_require(`
1010 attribute admin_terminal;
1011 class chr_file { read write };
1012 ')
763c441e 1013
c98340cf
CP
1014 dontaudit $1 admin_terminal:chr_file { read write };
1015 ')
763c441e
CP
1016')
1017
fd89e19f
CP
1018########################################
1019## <summary>
1020## Inherit and use sysadm file descriptors
1021## </summary>
1022## <param name="domain">
1023## The type of the process performing this action.
1024## </param>
1025#
1026interface(`userdom_use_sysadm_fd',`
c98340cf
CP
1027 ifdef(`targeted_policy',`
1028 #cjp: need to doublecheck this one
1029 unconfined_use_fd($1)
1030 ',`
1031 gen_require(`
1032 type sysadm_t;
1033 class fd use;
1034 ')
fd89e19f 1035
c98340cf
CP
1036 allow $1 sysadm_t:fd use;
1037 ')
fd89e19f
CP
1038')
1039
1040########################################
1041## <summary>
1042## Read and write sysadm user unnamed pipes.
1043## </summary>
1044## <param name="domain">
1045## The type of the process performing this action.
1046## </param>
1047#
1048interface(`userdom_rw_sysadm_pipe',`
c98340cf
CP
1049 ifdef(`targeted_policy',`
1050 #cjp: need to doublecheck this one
1051 unconfined_rw_pipe($1)
1052 ',`
1053 gen_require(`
1054 type sysadm_t;
1055 class fifo_file rw_file_perms;
1056 ')
fd89e19f 1057
c98340cf
CP
1058 allow $1 sysadm_t:fifo_file rw_file_perms;
1059 ')
fd89e19f
CP
1060')
1061
1062########################################
1063## <summary>
1064## Read files in the sysadm users home directory.
1065## </summary>
1066## <param name="domain">
1067## The type of the process performing this action.
1068## </param>
1069#
1070interface(`userdom_read_sysadm_home_files',`
1071 gen_require(`
1072 type sysadm_home_dir_t, sysadm_home_t;
1073 class dir r_dir_perms;
1074 class file r_file_perms;
1075 class lnk_file r_file_perms;
1076 ')
1077
1078 files_search_home($1)
1079 allow $1 { sysadm_home_dir_t sysadm_home_t }:dir r_dir_perms;
1080 allow $1 sysadm_home_t:{ file lnk_file } r_file_perms;
1081')
1082
4bf4ed9e 1083########################################
ab940a4c 1084## <summary>
414e4151 1085## Search all users home directories.
ab940a4c 1086## </summary>
414e4151
CP
1087## <param name="domain">
1088## The type of the process performing this action.
1089## </param>
4bf4ed9e 1090#
199895e2 1091interface(`userdom_search_all_users_home',`
0404a390
CP
1092 gen_require(`
1093 attribute home_dir_type, home_type;
1094 class dir search;
1095 ')
0c73cd25 1096
c9428d33 1097 files_list_home($1)
0c73cd25 1098 allow $1 { home_dir_type home_type }:dir search;
4bf4ed9e
CP
1099')
1100
daa0e0b0 1101########################################
ab940a4c 1102## <summary>
414e4151 1103## Read all files in all users home directories.
ab940a4c 1104## </summary>
414e4151
CP
1105## <param name="domain">
1106## The type of the process performing this action.
1107## </param>
daa0e0b0 1108#
fd89e19f 1109interface(`userdom_read_all_user_files',`
0404a390
CP
1110 gen_require(`
1111 attribute home_type;
1112 class dir r_dir_perms;
1113 class file r_file_perms;
1114 ')
0c73cd25 1115
c9428d33 1116 files_list_home($1)
cc41a97c 1117 allow $1 home_type:dir r_dir_perms;
0fd9dc55 1118 allow $1 home_type:file r_file_perms;
daa0e0b0
CP
1119')
1120
daa0e0b0 1121########################################
ab940a4c
CP
1122## <summary>
1123## Write all unprivileged users files in /tmp
1124## </summary>
1125## <param name="domain">
1126## The type of the process performing this action.
1127## </param>
1128#
1129interface(`userdom_write_unpriv_user_tmp',`
1130 gen_require(`
1131 attribute user_tmpfile;
1132 class file { getattr write append };
1133 ')
1134
1135 allow $1 user_tmpfile:file { getattr write append };
1136')
1137
1138########################################
1139## <summary>
414e4151 1140## Inherit the file descriptors from all user domains
ab940a4c 1141## </summary>
414e4151
CP
1142## <param name="domain">
1143## The type of the process performing this action.
1144## </param>
490639cd 1145#
199895e2 1146interface(`userdom_use_all_user_fd',`
0404a390
CP
1147 gen_require(`
1148 attribute userdomain;
1149 class fd use;
1150 ')
0c73cd25
CP
1151
1152 allow $1 userdomain:fd use;
490639cd
CP
1153')
1154
4bf4ed9e 1155########################################
ab940a4c 1156## <summary>
414e4151 1157## Send general signals to all user domains.
ab940a4c 1158## </summary>
414e4151
CP
1159## <param name="domain">
1160## The type of the process performing this action.
1161## </param>
4bf4ed9e 1162#
199895e2 1163interface(`userdom_signal_all_users',`
0404a390
CP
1164 gen_require(`
1165 attribute userdomain;
1166 class process signal;
1167 ')
0c73cd25
CP
1168
1169 allow $1 userdomain:process signal;
4bf4ed9e
CP
1170')
1171
0404a390 1172########################################
ab940a4c 1173## <summary>
414e4151 1174## Send general signals to unprivileged user domains.
ab940a4c 1175## </summary>
414e4151
CP
1176## <param name="domain">
1177## The type of the process performing this action.
1178## </param>
0404a390 1179#
199895e2 1180interface(`userdom_signal_unpriv_users',`
0404a390
CP
1181 gen_require(`
1182 attribute unpriv_userdomain;
1183 class process signal;
1184 ')
0c73cd25 1185
0404a390 1186 allow $1 unpriv_userdomain:process signal;
4bf4ed9e
CP
1187')
1188
daa0e0b0 1189########################################
ab940a4c
CP
1190## <summary>
1191## Inherit the file descriptors from unprivileged user domains.
1192## </summary>
414e4151
CP
1193## <param name="domain">
1194## The type of the process performing this action.
1195## </param>
daa0e0b0 1196#
199895e2 1197interface(`userdom_use_unpriv_users_fd',`
0404a390
CP
1198 gen_require(`
1199 attribute unpriv_userdomain;
1200 class fd use;
1201 ')
0c73cd25
CP
1202
1203 allow $1 unpriv_userdomain:fd use;
daa0e0b0
CP
1204')
1205
daa0e0b0 1206########################################
ab940a4c 1207## <summary>
414e4151
CP
1208## Do not audit attempts to inherit the
1209## file descriptors from all user domains.
ab940a4c 1210## </summary>
414e4151
CP
1211## <param name="domain">
1212## The type of the process performing this action.
1213## </param>
daa0e0b0 1214#
199895e2 1215interface(`userdom_dontaudit_use_unpriv_user_fd',`
0404a390
CP
1216 gen_require(`
1217 attribute unpriv_userdomain;
1218 class fd use;
1219 ')
0c73cd25
CP
1220
1221 dontaudit $1 unpriv_userdomain:fd use;
daa0e0b0
CP
1222')
1223
ebdc3b79
CP
1224########################################
1225## <summary>
1226## Do not audit attempts to use unprivileged
1227## user ttys.
1228## </summary>
1229## <param name="domain">
1230## The type of the process performing this action.
1231## </param>
1232#
1233interface(`userdom_dontaudit_use_unpriv_user_tty',`
1234 gen_require(`
1235 attribute user_ttynode;
1236 class chr_file rw_file_perms;
1237 ')
1238
1239 dontaudit $1 user_ttynode:chr_file rw_file_perms;
1240')
c98340cf
CP
1241
1242########################################
1243## <summary>
1244## Unconfined access to user domains.
1245## </summary>
1246## <param name="domain">
1247## Domain allowed access.
1248## </param>
1249#
1250interface(`userdom_unconfined',`
1251 gen_require(`
1252 type user_home_dir_t;
1253 class dir create_dir_perms;
1254 ')
1255
1256 allow $1 user_home_dir_t:dir create_dir_perms;
1257 files_create_home_dirs($1,user_home_dir_t)
1258')