Commit | Line | Data |
---|---|---|
fe185d88 MG |
1 | policy_module(gruntmasterd, 1.0) |
2 | ||
da905f9e MG |
3 | define(`read_file_perms', `{ getattr ioctl read lock open }') |
4 | define(`read_dir_perms', `{ getattr ioctl read lock open search}') | |
5 | define(`everything_file_perms', `{ getattr ioctl read lock open unlink setattr append write create rename link }') | |
6 | define(`everything_dir_perms', `{ getattr ioctl read lock open search unlink setattr write create rename link rmdir remove_name reparent add_name }') | |
7 | define(`domain_read_files', `allow $1 $2 : dir read_dir_perms; allow $1 $2 : file read_file_perms; allow $1 $2 : lnk_file read_file_perms;') | |
8 | define(`domain_everything_files', `allow $1 $2 : dir everything_dir_perms; allow $1 $2 : file everything_file_perms; allow $1 $2 : lnk_file everything_file_perms;') | |
9 | define(`gruntmaster_read', `domain_read_files(gruntmasterd_t, $1)') | |
10 | define(`gruntmaster_everything', `domain_everything_files(gruntmasterd_t, $1)') | |
fe185d88 MG |
11 | |
12 | require{ | |
13 | type bin_t; | |
14 | type httpd_sys_content_rw_t; | |
15 | type httpd_sys_content_t; | |
16 | type httpd_t; | |
17 | type httpd_tmp_t; | |
3f07cf69 | 18 | type port_t; |
fe185d88 MG |
19 | type proc_t; |
20 | type urandom_device_t; | |
21 | } | |
5c5cd38a | 22 | |
da905f9e | 23 | # Types |
5c5cd38a | 24 | type gruntmasterd_t; |
3f07cf69 | 25 | type gruntmasterd_etc_t; |
5c5cd38a | 26 | type gruntmasterd_exec_t; |
5c5cd38a | 27 | type gruntmasterd_log_t; |
3f07cf69 | 28 | type gruntmasterd_tmp_t; |
8a8d1a82 | 29 | type gruntmasterd_var_lib_t; |
5c5cd38a MG |
30 | type gruntmaster_job_t; |
31 | type gruntmaster_job_exec_t; | |
da905f9e MG |
32 | type gruntmaster_compile_t; |
33 | type gruntmaster_compile_exec_t; | |
3f07cf69 MG |
34 | type gruntmaster_paged_t; |
35 | type gruntmaster_paged_exec_t; | |
da905f9e MG |
36 | |
37 | domain_type(gruntmaster_job_t) | |
38 | domain_entry_file(gruntmaster_job_t, gruntmaster_job_exec_t) | |
39 | role system_r types gruntmaster_job_t; | |
fe185d88 | 40 | |
da905f9e MG |
41 | domain_type(gruntmaster_compile_t) |
42 | domain_entry_file(gruntmaster_compile_t, gruntmaster_compile_exec_t) | |
43 | role system_r types gruntmaster_compile_t; | |
3f07cf69 MG |
44 | type_transition gruntmaster_compile_t gruntmasterd_tmp_t : file gruntmaster_job_exec_t; |
45 | ||
46 | init_daemon_domain(gruntmaster_paged_t, gruntmaster_paged_exec_t) | |
47 | type_transition gruntmaster_paged_t httpd_sys_content_t : { file dir } httpd_sys_content_rw_t; | |
fe185d88 | 48 | |
da905f9e MG |
49 | init_daemon_domain(gruntmasterd_t, gruntmasterd_exec_t) |
50 | logging_log_file(gruntmasterd_log_t) | |
51 | logging_log_filetrans(gruntmasterd_t, gruntmasterd_log_t, file) | |
52 | logging_search_logs(gruntmasterd_t) | |
3f07cf69 MG |
53 | type_transition gruntmasterd_t gruntmaster_compile_exec_t : process gruntmaster_compile_t; |
54 | type_transition gruntmasterd_t gruntmaster_job_exec_t : process gruntmaster_job_t; | |
55 | type_transition gruntmasterd_t tmp_t : dir gruntmasterd_tmp_t; | |
56 | files_type(gruntmasterd_tmp_t) | |
57 | files_type(gruntmasterd_etc_t) | |
8a8d1a82 | 58 | files_type(gruntmasterd_var_lib_t) |
da905f9e MG |
59 | |
60 | # Daemon permissions | |
61 | allow gruntmasterd_t { gruntmaster_compile_t gruntmaster_job_t } : process { sigkill siginh rlimitinh transition }; | |
62 | allow gruntmasterd_t bin_t : file { execute execute_no_trans }; | |
63 | allow gruntmasterd_t self : process fork; | |
64 | allow gruntmasterd_t self:fifo_file everything_file_perms; | |
65 | allow gruntmasterd_t urandom_device_t:chr_file read_file_perms; | |
66 | allow gruntmasterd_t { gruntmaster_compile_exec_t gruntmaster_job_exec_t } : file execute; | |
3f07cf69 MG |
67 | allow gruntmasterd_t port_t:tcp_socket name_connect; |
68 | allow gruntmasterd_t self:tcp_socket { read write create ioctl connect }; | |
da905f9e | 69 | dontaudit gruntmasterd_t { gruntmaster_compile_t gruntmaster_job_t } : process noatsecure; |
5c5cd38a | 70 | |
3f07cf69 MG |
71 | allow gruntmasterd_t tmp_t : dir { getattr write search add_name }; |
72 | ||
fe185d88 | 73 | gruntmaster_read(bin_t) |
da905f9e | 74 | gruntmaster_read(gruntmaster_compile_exec_t) |
3f07cf69 | 75 | gruntmaster_read(gruntmasterd_etc_t) |
8a8d1a82 | 76 | gruntmaster_read(gruntmasterd_var_lib_t) |
3f07cf69 | 77 | gruntmaster_read(gruntmaster_job_exec_t) |
da905f9e | 78 | gruntmaster_read(httpd_sys_content_t) |
fe185d88 | 79 | gruntmaster_read(lib_t) |
da905f9e | 80 | gruntmaster_read(proc_t) |
fe185d88 | 81 | gruntmaster_read(usr_t) |
fe185d88 | 82 | |
da905f9e | 83 | gruntmaster_everything(gruntmasterd_log_t) |
3f07cf69 | 84 | gruntmaster_everything(gruntmasterd_tmp_t) |
fe185d88 | 85 | |
da905f9e MG |
86 | files_read_etc_files(gruntmasterd_t) |
87 | files_search_etc(gruntmasterd_t) | |
88 | libs_use_ld_so(gruntmasterd_t) | |
89 | libs_use_shared_libs(gruntmasterd_t) | |
90 | miscfiles_read_localization(gruntmasterd_t) | |
5c5cd38a | 91 | |
da905f9e MG |
92 | # Executor and job permissions |
93 | domain_read_files(gruntmaster_job_t, bin_t) | |
94 | domain_read_files(gruntmaster_job_t, usr_t) | |
95 | allow gruntmaster_job_t gruntmaster_job_exec_t : file { execute execute_no_trans }; | |
96 | allow gruntmaster_job_t gruntmasterd_t:fd use; | |
97 | allow gruntmaster_job_t gruntmasterd_t:process sigchld; | |
3f07cf69 MG |
98 | allow gruntmaster_job_t gruntmasterd_tmp_t : dir read_dir_perms; |
99 | allow gruntmaster_job_t gruntmasterd_tmp_t : file { getattr ioctl read write }; | |
da905f9e MG |
100 | allow gruntmaster_job_t init_t:fd use; |
101 | allow gruntmaster_job_t self:process setrlimit; | |
102 | allow gruntmaster_job_t urandom_device_t:chr_file read_file_perms; | |
5c5cd38a | 103 | |
fe185d88 | 104 | libs_use_ld_so(gruntmaster_job_t) |
fe185d88 | 105 | libs_use_shared_libs(gruntmaster_job_t) |
fe185d88 MG |
106 | miscfiles_read_localization(gruntmaster_job_t) |
107 | ||
da905f9e MG |
108 | # Compile permissions |
109 | domain_everything_files(gruntmaster_compile_t, gruntmaster_job_exec_t) | |
110 | domain_everything_files(gruntmaster_compile_t, tmp_t) | |
111 | domain_read_files(gruntmaster_compile_t, bin_t) | |
da905f9e MG |
112 | domain_read_files(gruntmaster_compile_t, lib_t) |
113 | domain_read_files(gruntmaster_compile_t, proc_t) | |
114 | domain_read_files(gruntmaster_compile_t, proc_t) | |
115 | domain_read_files(gruntmaster_compile_t, usr_t) | |
3f07cf69 | 116 | domain_read_files(gruntmaster_compile_t, gruntmasterd_tmp_t) |
da905f9e MG |
117 | allow gruntmaster_compile_t gruntmasterd_t : fifo_file { read write ioctl }; |
118 | allow gruntmaster_compile_t gruntmasterd_t:fd use; | |
119 | allow gruntmaster_compile_t gruntmasterd_t:process sigchld; | |
3f07cf69 | 120 | allow gruntmaster_compile_t gruntmasterd_tmp_t:dir { write add_name }; |
da905f9e MG |
121 | allow gruntmaster_compile_t self : fifo_file { read write ioctl }; |
122 | allow gruntmaster_compile_t self:process signal; | |
123 | allow gruntmaster_compile_t urandom_device_t:chr_file read_file_perms; | |
124 | allow gruntmaster_compile_t { bin_t lib_t } : file { execute execute_no_trans }; | |
125 | ||
126 | libs_use_ld_so(gruntmaster_compile_t) | |
127 | libs_use_shared_libs(gruntmaster_compile_t) | |
128 | miscfiles_read_localization(gruntmaster_compile_t) | |
3f07cf69 MG |
129 | |
130 | # Page generator permissions | |
131 | domain_everything_files(gruntmaster_paged_t, httpd_sys_content_rw_t) | |
132 | domain_read_files(gruntmaster_paged_t, usr_t) | |
133 | domain_read_files(gruntmaster_paged_t, bin_t) | |
134 | allow gruntmaster_paged_t urandom_device_t:chr_file read_file_perms; | |
135 | allow gruntmaster_paged_t port_t:tcp_socket name_connect; | |
136 | allow gruntmaster_paged_t self:tcp_socket { read write create ioctl connect }; | |
137 | ||
138 | libs_use_ld_so(gruntmaster_paged_t) | |
139 | libs_use_shared_libs(gruntmaster_paged_t) | |
140 | miscfiles_read_localization(gruntmaster_paged_t) |