dirsrv.te 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  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. # dynamic libraries
  24. type dirsrv_lib_t;
  25. files_type(dirsrv_lib_t)
  26. # var/lib files
  27. type dirsrv_var_lib_t;
  28. files_type(dirsrv_var_lib_t)
  29. # log files
  30. type dirsrv_var_log_t;
  31. logging_log_file(dirsrv_var_log_t)
  32. # snmp log file
  33. type dirsrv_snmp_var_log_t;
  34. logging_log_file(dirsrv_snmp_var_log_t)
  35. # pid files
  36. type dirsrv_var_run_t;
  37. files_pid_file(dirsrv_var_run_t)
  38. # snmp pid file
  39. type dirsrv_snmp_var_run_t;
  40. files_pid_file(dirsrv_snmp_var_run_t)
  41. # lock files
  42. type dirsrv_var_lock_t;
  43. files_lock_file(dirsrv_var_lock_t)
  44. # config files
  45. type dirsrv_config_t;
  46. files_type(dirsrv_config_t)
  47. # tmp files
  48. type dirsrv_tmp_t;
  49. files_tmp_file(dirsrv_tmp_t)
  50. # semaphores
  51. type dirsrv_tmpfs_t;
  52. files_tmpfs_file(dirsrv_tmpfs_t)
  53. # shared files
  54. type dirsrv_share_t;
  55. files_type(dirsrv_share_t);
  56. ########################################
  57. #
  58. # dirsrv local policy
  59. #
  60. # Some common macros
  61. files_read_etc_files(dirsrv_t)
  62. corecmd_search_sbin(dirsrv_t)
  63. files_read_usr_symlinks(dirsrv_t)
  64. miscfiles_read_localization(dirsrv_t)
  65. dev_read_urand(dirsrv_t)
  66. libs_use_ld_so(dirsrv_t)
  67. libs_use_shared_libs(dirsrv_t)
  68. allow dirsrv_t self:fifo_file { read write };
  69. # process stuff
  70. allow dirsrv_t self:process { getsched setsched signal_perms};
  71. allow dirsrv_t self:capability { sys_nice setuid setgid chown dac_override };
  72. # semaphores
  73. allow dirsrv_t self:sem all_sem_perms;
  74. manage_files_pattern(dirsrv_t, dirsrv_tmpfs_t, dirsrv_tmpfs_t)
  75. fs_tmpfs_filetrans(dirsrv_t, dirsrv_tmpfs_t, file)
  76. # dynamic libraries
  77. allow dirsrv_t dirsrv_lib_t:file exec_file_perms;
  78. allow dirsrv_t dirsrv_lib_t:lnk_file read_lnk_file_perms;
  79. allow dirsrv_t dirsrv_lib_t:dir search_dir_perms;
  80. # var/lib files for dirsrv
  81. manage_files_pattern(dirsrv_t, dirsrv_var_lib_t, dirsrv_var_lib_t)
  82. manage_dirs_pattern(dirsrv_t, dirsrv_var_lib_t, dirsrv_var_lib_t)
  83. files_var_lib_filetrans(dirsrv_t,dirsrv_var_lib_t, { file dir sock_file })
  84. # log files
  85. manage_files_pattern(dirsrv_t, dirsrv_var_log_t, dirsrv_var_log_t)
  86. allow dirsrv_t dirsrv_var_log_t:dir { setattr };
  87. logging_log_filetrans(dirsrv_t,dirsrv_var_log_t,{ sock_file file dir })
  88. # pid files
  89. manage_files_pattern(dirsrv_t, dirsrv_var_run_t, dirsrv_var_run_t)
  90. files_pid_filetrans(dirsrv_t, dirsrv_var_run_t, { file sock_file })
  91. # ldapi socket
  92. manage_sock_files_pattern(dirsrv_t, dirsrv_var_run_t, dirsrv_var_run_t)
  93. # lock files
  94. manage_files_pattern(dirsrv_t, dirsrv_var_lock_t, dirsrv_var_lock_t)
  95. manage_dirs_pattern(dirsrv_t, dirsrv_var_lock_t, dirsrv_var_lock_t)
  96. files_lock_filetrans(dirsrv_t, dirsrv_var_lock_t, { file })
  97. # config files
  98. manage_files_pattern(dirsrv_t, dirsrv_config_t, dirsrv_config_t)
  99. # tmp files
  100. manage_files_pattern(dirsrv_t, dirsrv_tmp_t, dirsrv_tmp_t)
  101. manage_dirs_pattern(dirsrv_t, dirsrv_tmp_t, dirsrv_tmp_t)
  102. files_tmp_filetrans(dirsrv_t, dirsrv_tmp_t, { file dir })
  103. # system state
  104. fs_getattr_all_fs(dirsrv_t)
  105. kernel_read_system_state(dirsrv_t)
  106. # Networking basics
  107. sysnet_dns_name_resolve(dirsrv_t)
  108. corenet_all_recvfrom_unlabeled(dirsrv_t)
  109. corenet_all_recvfrom_netlabel(dirsrv_t)
  110. corenet_tcp_sendrecv_generic_if(dirsrv_t)
  111. corenet_tcp_sendrecv_generic_node(dirsrv_t)
  112. corenet_tcp_sendrecv_all_ports(dirsrv_t)
  113. corenet_tcp_bind_all_nodes(dirsrv_t)
  114. corenet_tcp_bind_ldap_port(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)