dirsrv.te 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. policy_module(dirsrv,1.0.0)
  2. ########################################
  3. #
  4. # Declarations
  5. #
  6. # NGK - this can go away when bz 478629, bz 523548,
  7. # and bz 523771 are addressed. See the notes below
  8. # where we work around those issues.
  9. require {
  10. type snmpd_var_lib_t;
  11. type snmpd_t;
  12. }
  13. # main daemon
  14. type dirsrv_t;
  15. type dirsrv_exec_t;
  16. domain_type(dirsrv_t)
  17. init_daemon_domain(dirsrv_t, dirsrv_exec_t)
  18. # snmp subagent daemon
  19. type dirsrv_snmp_t;
  20. type dirsrv_snmp_exec_t;
  21. domain_type(dirsrv_snmp_t)
  22. init_daemon_domain(dirsrv_snmp_t, dirsrv_snmp_exec_t)
  23. # var/lib files
  24. type dirsrv_var_lib_t;
  25. files_type(dirsrv_var_lib_t)
  26. # log files
  27. type dirsrv_var_log_t;
  28. logging_log_file(dirsrv_var_log_t)
  29. # snmp log file
  30. type dirsrv_snmp_var_log_t;
  31. logging_log_file(dirsrv_snmp_var_log_t)
  32. # pid files
  33. type dirsrv_var_run_t;
  34. files_pid_file(dirsrv_var_run_t)
  35. # snmp pid file
  36. type dirsrv_snmp_var_run_t;
  37. files_pid_file(dirsrv_snmp_var_run_t)
  38. # lock files
  39. type dirsrv_var_lock_t;
  40. files_lock_file(dirsrv_var_lock_t)
  41. # config files
  42. type dirsrv_config_t;
  43. files_type(dirsrv_config_t)
  44. # tmp files
  45. type dirsrv_tmp_t;
  46. files_tmp_file(dirsrv_tmp_t)
  47. # semaphores
  48. type dirsrv_tmpfs_t;
  49. files_tmpfs_file(dirsrv_tmpfs_t)
  50. # shared files
  51. type dirsrv_share_t;
  52. files_type(dirsrv_share_t);
  53. ########################################
  54. #
  55. # dirsrv local policy
  56. #
  57. # Some common macros
  58. files_read_etc_files(dirsrv_t)
  59. corecmd_search_sbin(dirsrv_t)
  60. files_read_usr_symlinks(dirsrv_t)
  61. miscfiles_read_localization(dirsrv_t)
  62. dev_read_urand(dirsrv_t)
  63. libs_use_ld_so(dirsrv_t)
  64. libs_use_shared_libs(dirsrv_t)
  65. allow dirsrv_t self:fifo_file { read write };
  66. # process stuff
  67. allow dirsrv_t self:process { getsched setsched setfscreate signal_perms};
  68. allow dirsrv_t self:capability { sys_nice setuid setgid fsetid chown dac_override fowner };
  69. # semaphores
  70. allow dirsrv_t self:sem all_sem_perms;
  71. manage_files_pattern(dirsrv_t, dirsrv_tmpfs_t, dirsrv_tmpfs_t)
  72. fs_tmpfs_filetrans(dirsrv_t, dirsrv_tmpfs_t, file)
  73. # var/lib files for dirsrv
  74. manage_files_pattern(dirsrv_t, dirsrv_var_lib_t, dirsrv_var_lib_t)
  75. manage_dirs_pattern(dirsrv_t, dirsrv_var_lib_t, dirsrv_var_lib_t)
  76. files_var_lib_filetrans(dirsrv_t,dirsrv_var_lib_t, { file dir sock_file })
  77. # log files
  78. manage_files_pattern(dirsrv_t, dirsrv_var_log_t, dirsrv_var_log_t)
  79. manage_fifo_files_pattern(dirsrv_t, dirsrv_var_log_t, dirsrv_var_log_t)
  80. allow dirsrv_t dirsrv_var_log_t:dir { setattr };
  81. logging_log_filetrans(dirsrv_t,dirsrv_var_log_t,{ sock_file file dir })
  82. # pid files
  83. manage_files_pattern(dirsrv_t, dirsrv_var_run_t, dirsrv_var_run_t)
  84. files_pid_filetrans(dirsrv_t, dirsrv_var_run_t, { file sock_file })
  85. # ldapi socket
  86. manage_sock_files_pattern(dirsrv_t, dirsrv_var_run_t, dirsrv_var_run_t)
  87. # lock files
  88. manage_files_pattern(dirsrv_t, dirsrv_var_lock_t, dirsrv_var_lock_t)
  89. manage_dirs_pattern(dirsrv_t, dirsrv_var_lock_t, dirsrv_var_lock_t)
  90. files_lock_filetrans(dirsrv_t, dirsrv_var_lock_t, { file })
  91. # config files
  92. manage_files_pattern(dirsrv_t, dirsrv_config_t, dirsrv_config_t)
  93. manage_dirs_pattern(dirsrv_t, dirsrv_config_t, dirsrv_config_t)
  94. # tmp files
  95. manage_files_pattern(dirsrv_t, dirsrv_tmp_t, dirsrv_tmp_t)
  96. manage_dirs_pattern(dirsrv_t, dirsrv_tmp_t, dirsrv_tmp_t)
  97. files_tmp_filetrans(dirsrv_t, dirsrv_tmp_t, { file dir })
  98. # system state
  99. fs_getattr_all_fs(dirsrv_t)
  100. kernel_read_system_state(dirsrv_t)
  101. # kerberos config for SASL GSSAPI
  102. kerberos_read_config(dirsrv_t)
  103. kerberos_dontaudit_write_config(dirsrv_t)
  104. # Networking basics
  105. sysnet_dns_name_resolve(dirsrv_t)
  106. corenet_all_recvfrom_unlabeled(dirsrv_t)
  107. corenet_all_recvfrom_netlabel(dirsrv_t)
  108. corenet_tcp_sendrecv_generic_if(dirsrv_t)
  109. corenet_tcp_sendrecv_generic_node(dirsrv_t)
  110. corenet_tcp_sendrecv_all_ports(dirsrv_t)
  111. corenet_tcp_bind_all_nodes(dirsrv_t)
  112. corenet_tcp_bind_ldap_port(dirsrv_t)
  113. corenet_tcp_bind_all_rpc_ports(dirsrv_t)
  114. corenet_udp_bind_all_rpc_ports(dirsrv_t)
  115. corenet_tcp_connect_all_ports(dirsrv_t)
  116. corenet_sendrecv_ldap_server_packets(dirsrv_t)
  117. corenet_sendrecv_all_client_packets(dirsrv_t)
  118. allow dirsrv_t self:tcp_socket { create_stream_socket_perms };
  119. # Init script handling
  120. init_use_fds(dirsrv_t)
  121. init_use_script_ptys(dirsrv_t)
  122. domain_use_interactive_fds(dirsrv_t)
  123. ########################################
  124. #
  125. # dirsrv-snmp local policy
  126. #
  127. # Some common macros
  128. files_read_etc_files(dirsrv_snmp_t)
  129. miscfiles_read_localization(dirsrv_snmp_t)
  130. libs_use_ld_so(dirsrv_snmp_t)
  131. libs_use_shared_libs(dirsrv_snmp_t)
  132. dev_read_rand(dirsrv_snmp_t)
  133. dev_read_urand(dirsrv_snmp_t)
  134. files_read_usr_files(dirsrv_snmp_t)
  135. fs_getattr_tmpfs(dirsrv_snmp_t)
  136. fs_search_tmpfs(dirsrv_snmp_t)
  137. allow dirsrv_snmp_t self:fifo_file { read write };
  138. sysnet_read_config(dirsrv_snmp_t)
  139. sysnet_dns_name_resolve(dirsrv_snmp_t)
  140. # Net-SNMP /var/lib files (includes agentx unix domain socket)
  141. snmp_dontaudit_read_snmp_var_lib_files(dirsrv_snmp_t)
  142. snmp_dontaudit_write_snmp_var_lib_files(dirsrv_snmp_t)
  143. # NGK - there really should be a macro for this. (see bz 523771)
  144. allow dirsrv_snmp_t snmpd_var_lib_t:file append;
  145. # NGK - use snmp_stream_connect(dirsrv_snmp_t) when it is made
  146. # available on all platforms we build on (see bz 478629 and bz 523548)
  147. stream_connect_pattern(dirsrv_snmp_t, snmpd_var_lib_t, snmpd_var_lib_t, snmpd_t)
  148. # Net-SNMP agentx tcp socket
  149. corenet_tcp_connect_agentx_port(dirsrv_snmp_t)
  150. # Net-SNMP persistent data file
  151. files_manage_var_files(dirsrv_snmp_t)
  152. # stats file semaphore
  153. rw_files_pattern(dirsrv_snmp_t, dirsrv_tmpfs_t, dirsrv_tmpfs_t)
  154. # stats file
  155. read_files_pattern(dirsrv_snmp_t, dirsrv_var_run_t, dirsrv_var_run_t)
  156. # process stuff
  157. allow dirsrv_snmp_t self:capability { dac_override dac_read_search };
  158. # config file
  159. read_files_pattern(dirsrv_snmp_t, dirsrv_config_t, dirsrv_config_t)
  160. # pid file
  161. manage_files_pattern(dirsrv_snmp_t, dirsrv_snmp_var_run_t, dirsrv_snmp_var_run_t)
  162. files_pid_filetrans(dirsrv_snmp_t, dirsrv_snmp_var_run_t, { file sock_file })
  163. search_dirs_pattern(dirsrv_snmp_t, dirsrv_var_run_t, dirsrv_var_run_t)
  164. # log file
  165. manage_files_pattern(dirsrv_snmp_t, dirsrv_var_log_t, dirsrv_snmp_var_log_t);
  166. filetrans_pattern(dirsrv_snmp_t, dirsrv_var_log_t, dirsrv_snmp_var_log_t, file)
  167. # Init script handling
  168. init_use_fds(dirsrv_snmp_t)
  169. init_use_script_ptys(dirsrv_snmp_t)
  170. domain_use_interactive_fds(dirsrv_snmp_t)