]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - refpolicy/policy/modules/services/postgresql.te
Fixed a problem which was allowing processes to become unconfined from initrc
[people/stevee/selinux-policy.git] / refpolicy / policy / modules / services / postgresql.te
CommitLineData
a1fcff33
CP
1
2policy_module(postgresql,1.0)
3
4#################################
5#
6# Declarations
7#
8type postgresql_t;
9type postgresql_exec_t;
10init_daemon_domain(postgresql_t,postgresql_exec_t)
11
12type postgresql_db_t;
13files_type(postgresql_db_t)
14
15type postgresql_etc_t; #, usercanread;
16files_type(postgresql_etc_t)
17
18type postgresql_lock_t;
19files_lock_file(postgresql_lock_t)
20
21type postgresql_log_t;
22logging_log_file(postgresql_log_t)
23
24type postgresql_tmp_t;
25files_tmp_file(postgresql_tmp_t)
26
27type postgresql_var_run_t;
28files_pid_file(postgresql_var_run_t)
29
30########################################
31#
32# postgresql Local policy
33#
34allow postgresql_t self:capability { kill dac_override dac_read_search chown fowner fsetid setuid setgid sys_nice sys_tty_config sys_admin };
57d8e6c7 35allow postgresql_t self:process signal_perms;
a1fcff33
CP
36allow postgresql_t self:fifo_file { getattr read write ioctl };
37allow postgresql_t self:file { getattr read };
38allow postgresql_t self:sem create_sem_perms;
39allow postgresql_t self:shm create_shm_perms;
40allow postgresql_t self:tcp_socket create_stream_socket_perms;
41allow postgresql_t self:udp_socket create_stream_socket_perms;
42allow postgresql_t self:unix_dgram_socket create_socket_perms;
43allow postgresql_t self:unix_stream_socket create_stream_socket_perms;
44dontaudit postgresql_t self:capability { sys_tty_config sys_admin };
45
46allow postgresql_t postgresql_db_t:dir create_dir_perms;
47allow postgresql_t postgresql_db_t:fifo_file create_file_perms;
48allow postgresql_t postgresql_db_t:file create_file_perms;
49allow postgresql_t postgresql_db_t:lnk_file create_lnk_perms;
50allow postgresql_t postgresql_db_t:sock_file create_file_perms;
51files_create_var_lib(postgresql_t, postgresql_db_t, { dir file lnk_file sock_file fifo_file })
52
53allow postgresql_t postgresql_etc_t:dir r_dir_perms;
54allow postgresql_t postgresql_etc_t:file r_file_perms;
55allow postgresql_t postgresql_etc_t:lnk_file { getattr read };
56
57allow postgresql_t postgresql_exec_t:lnk_file { getattr read };
58can_exec(postgresql_t, postgresql_exec_t )
59
60allow postgresql_t postgresql_lock_t:file create_file_perms;
61files_create_lock(postgresql_t,postgresql_lock_t)
62
63allow postgresql_t postgresql_log_t:dir rw_dir_perms;
64allow postgresql_t postgresql_log_t:file create_file_perms;
65logging_create_log(postgresql_t,postgresql_log_t,{ file dir })
66
67allow postgresql_t postgresql_tmp_t:dir create_dir_perms;
68allow postgresql_t postgresql_tmp_t:fifo_file create_file_perms;
69allow postgresql_t postgresql_tmp_t:file create_file_perms;
70allow postgresql_t postgresql_tmp_t:lnk_file create_lnk_perms;
71allow postgresql_t postgresql_tmp_t:sock_file create_file_perms;
72files_create_tmp_files(postgresql_t, postgresql_tmp_t, { dir file sock_file })
73fs_create_tmpfs_data(postgresql_t, postgresql_tmp_t, { dir file lnk_file sock_file fifo_file })
74
75allow postgresql_t postgresql_var_run_t:dir rw_dir_perms;
76allow postgresql_t postgresql_var_run_t:file create_file_perms;
77allow postgresql_t postgresql_var_run_t:sock_file create_file_perms;
78files_create_pid(postgresql_t,postgresql_var_run_t)
79
80kernel_read_kernel_sysctl(postgresql_t)
81kernel_read_system_state(postgresql_t)
82kernel_list_proc(postgresql_t)
83kernel_read_all_sysctl(postgresql_t)
84kernel_read_proc_symlinks(postgresql_t)
85kernel_tcp_recvfrom(postgresql_t)
86
87corenet_tcp_sendrecv_all_if(postgresql_t)
88corenet_udp_sendrecv_all_if(postgresql_t)
89corenet_raw_sendrecv_all_if(postgresql_t)
90corenet_tcp_sendrecv_all_nodes(postgresql_t)
91corenet_udp_sendrecv_all_nodes(postgresql_t)
92corenet_raw_sendrecv_all_nodes(postgresql_t)
93corenet_tcp_sendrecv_all_ports(postgresql_t)
94corenet_udp_sendrecv_all_ports(postgresql_t)
95corenet_tcp_bind_all_nodes(postgresql_t)
96corenet_udp_bind_all_nodes(postgresql_t)
97corenet_tcp_bind_postgresql_port(postgresql_t)
98corenet_tcp_connect_auth_port(postgresql_t)
99
100dev_read_sysfs(postgresql_t)
101dev_read_urand(postgresql_t)
102
103fs_getattr_all_fs(postgresql_t)
104fs_search_auto_mountpoints(postgresql_t)
105
106term_use_controlling_term(postgresql_t)
107term_dontaudit_use_console(postgresql_t)
108
109corecmd_exec_bin(postgresql_t)
110corecmd_exec_ls(postgresql_t)
111corecmd_exec_sbin(postgresql_t)
112corecmd_exec_shell(postgresql_t)
113
114domain_dontaudit_list_all_domains_proc(postgresql_t)
115domain_use_wide_inherit_fd(postgresql_t)
116
117files_dontaudit_search_home(postgresql_t)
118files_manage_etc_files(postgresql_t)
119files_search_etc(postgresql_t)
120files_read_etc_runtime_files(postgresql_t)
121files_read_usr_files(postgresql_t)
122
123init_read_script_pid(postgresql_t)
124init_use_fd(postgresql_t)
125init_use_script_pty(postgresql_t)
126
127libs_use_ld_so(postgresql_t)
128libs_use_shared_libs(postgresql_t)
129
130logging_send_syslog_msg(postgresql_t)
131
132miscfiles_read_localization(postgresql_t)
133
134seutil_dontaudit_search_config(postgresql_t)
135
136sysnet_read_config(postgresql_t)
137
138userdom_dontaudit_search_sysadm_home_dir(postgresql_t)
139userdom_dontaudit_use_sysadm_tty(postgresql_t)
140userdom_dontaudit_use_unpriv_user_fd(postgresql_t)
141
142mta_getattr_spool(postgresql_t)
143
144ifdef(`targeted_policy', `
145 files_dontaudit_read_root_file(postgresql_t)
146 term_dontaudit_use_generic_pty(postgresql_t)
147 term_dontaudit_use_unallocated_tty(postgresql_t)
148')
149
150tunable_policy(`allow_execmem',`
151 allow postgresql_t self:process execmem;
152')
153
154optional_policy(`consoletype.te', `
155 consoletype_exec(postgresql_t)
156')
157
158optional_policy(`cron.te',`
159 cron_search_spool(postgresql_t)
160 cron_system_entry(postgresql_t,postgresql_exec_t)
161')
162
163optional_policy(`hostname.te', `
164 hostname_exec(postgresql_t)
165')
166
167optional_policy(`kerberos.te',`
168 kerberos_use(postgresql_t)
169')
170
171optional_policy(`mount.te',`
172 mount_send_nfs_client_request(postgresql_t)
173')
174
175optional_policy(`nis.te',`
176 nis_use_ypbind(postgresql_t)
177')
178
a1fcff33
CP
179optional_policy(`selinuxutil.te',`
180 seutil_sigchld_newrole(postgresql_t)
181')
182
183optional_policy(`udev.te', `
184 udev_read_db(postgresql_t)
185')
186
187ifdef(`TODO',`
25c67461
CP
188optional_policy(`rhgb.te',`
189 rhgb_domain(postgresql_t)
190')
a1fcff33
CP
191ifdef(`targeted_policy', `', `
192bool allow_user_postgresql_connect false;
193
194if (allow_user_postgresql_connect) {
195# allow any user domain to connect to the database server
196can_tcp_connect(userdomain, postgresql_t)
197allow userdomain postgresql_t:unix_stream_socket connectto;
198allow userdomain postgresql_var_run_t:sock_file write;
199allow userdomain postgresql_tmp_t:sock_file write;
200}
201')
202ifdef(`distro_debian', `
203 init_exec_script(postgresql_t)
204 # gross hack
205 postgresql_domtrans(dpkg_t)
206 can_exec(postgresql_t, dpkg_exec_t)
207')
208
209ifdef(`distro_gentoo', `
210 allow postgresql_t initrc_su_t:process { sigchld };
211 # "su - postgres ..." is called from initrc_t
212 postgresql_search_db_dir(initrc_su_t)
213 dontaudit initrc_su_t sysadm_devpts_t:chr_file rw_file_perms;
214')
215
216# Goes to apache.te:
217# Allow httpd to work with postgresql
218optional_policy(`postgresql.te', `
219 # Original policy had apache connecting to postgresql_tmp_t:sock_file
220 # instead of what is assumed to be correct: postgresql_var_run_t. -Don
221 postgresql_unix_connect(httpd_t)
222')
223')