1postgresql_selinux(8) SELinux Policy postgresql postgresql_selinux(8)
2
3
4
6 postgresql_selinux - Security Enhanced Linux Policy for the postgresql
7 processes
8
10 Security-Enhanced Linux secures the postgresql processes via flexible
11 mandatory access control.
12
13 The postgresql processes execute with the postgresql_t SELinux type.
14 You can check if you have these processes running by executing the ps
15 command with the -Z qualifier.
16
17 For example:
18
19 ps -eZ | grep postgresql_t
20
21
22
24 The postgresql_t SELinux type can be entered via the postgresql_exec_t
25 file type.
26
27 The default entrypoint paths for the postgresql_t domain are the fol‐
28 lowing:
29
30 /usr/bin/(se)?postgres, /usr/bin/initdb(.sepgsql)?, /usr/lib/post‐
31 gresql/bin/.*, /usr/bin/pg_ctl, /usr/libexec/postgresql-ctl,
32 /usr/bin/postgresql-check-db-dir,
33 /usr/lib/pgsql/test/regress/pg_regress
34
36 SELinux defines process types (domains) for each process running on the
37 system
38
39 You can see the context of a process using the -Z option to ps
40
41 Policy governs the access confined processes have to files. SELinux
42 postgresql policy is very flexible allowing users to setup their post‐
43 gresql processes in as secure a method as possible.
44
45 The following process types are defined for postgresql:
46
47 postgresql_t
48
49 Note: semanage permissive -a postgresql_t can be used to make the
50 process type postgresql_t permissive. SELinux does not deny access to
51 permissive process types, but the AVC (SELinux denials) messages are
52 still generated.
53
54
56 SELinux policy is customizable based on least access required. post‐
57 gresql policy is extremely flexible and has several booleans that allow
58 you to manipulate the policy and run postgresql with the tightest ac‐
59 cess possible.
60
61
62
63 If you want to allow postgresql to use ssh and rsync for point-in-time
64 recovery, you must turn on the postgresql_can_rsync boolean. Disabled
65 by default.
66
67 setsebool -P postgresql_can_rsync 1
68
69
70
71 If you want to allow transmit client label to foreign database, you
72 must turn on the postgresql_selinux_transmit_client_label boolean. Dis‐
73 abled by default.
74
75 setsebool -P postgresql_selinux_transmit_client_label 1
76
77
78
79 If you want to deny user domains applications to map a memory region as
80 both executable and writable, this is dangerous and the executable
81 should be reported in bugzilla, you must turn on the deny_execmem bool‐
82 ean. Enabled by default.
83
84 setsebool -P deny_execmem 1
85
86
87
88 If you want to determine whether exim can connect to databases, you
89 must turn on the exim_can_connect_db boolean. Disabled by default.
90
91 setsebool -P exim_can_connect_db 1
92
93
94
95 If you want to allow all domains to execute in fips_mode, you must turn
96 on the fips_mode boolean. Enabled by default.
97
98 setsebool -P fips_mode 1
99
100
101
102 If you want to determine whether ftpd can connect to databases over the
103 TCP network, you must turn on the ftpd_connect_db boolean. Disabled by
104 default.
105
106 setsebool -P ftpd_connect_db 1
107
108
109
110 If you want to allow HTTPD scripts and modules to connect to databases
111 over the network, you must turn on the httpd_can_network_connect_db
112 boolean. Disabled by default.
113
114 setsebool -P httpd_can_network_connect_db 1
115
116
117
118 If you want to allow confined applications to run with kerberos, you
119 must turn on the kerberos_enabled boolean. Enabled by default.
120
121 setsebool -P kerberos_enabled 1
122
123
124
125 If you want to allow system to run with NIS, you must turn on the
126 nis_enabled boolean. Disabled by default.
127
128 setsebool -P nis_enabled 1
129
130
131
132 If you want to allow PowerDNS to connect to databases over the network,
133 you must turn on the pdns_can_network_connect_db boolean. Disabled by
134 default.
135
136 setsebool -P pdns_can_network_connect_db 1
137
138
139
141 SELinux defines port types to represent TCP and UDP ports.
142
143 You can see the types associated with a port by using the following
144 command:
145
146 semanage port -l
147
148
149 Policy governs the access confined processes have to these ports.
150 SELinux postgresql policy is very flexible allowing users to setup
151 their postgresql processes in as secure a method as possible.
152
153 The following port types are defined for postgresql:
154
155
156 postgresql_port_t
157
158
159
160 Default Defined Ports:
161 tcp 5432,9898
162
164 The SELinux process type postgresql_t can manage files labeled with the
165 following file types. The paths listed are the default paths for these
166 file types. Note the processes UID still need to have DAC permissions.
167
168 cluster_conf_t
169
170 /etc/cluster(/.*)?
171
172 cluster_var_lib_t
173
174 /var/lib/pcsd(/.*)?
175 /var/lib/cluster(/.*)?
176 /var/lib/openais(/.*)?
177 /var/lib/pengine(/.*)?
178 /var/lib/corosync(/.*)?
179 /usr/lib/heartbeat(/.*)?
180 /var/lib/heartbeat(/.*)?
181 /var/lib/pacemaker(/.*)?
182
183 cluster_var_run_t
184
185 /var/run/crm(/.*)?
186 /var/run/cman_.*
187 /var/run/rsctmp(/.*)?
188 /var/run/aisexec.*
189 /var/run/heartbeat(/.*)?
190 /var/run/pcsd-ruby.socket
191 /var/run/corosync-qnetd(/.*)?
192 /var/run/corosync-qdevice(/.*)?
193 /var/run/corosync.pid
194 /var/run/cpglockd.pid
195 /var/run/rgmanager.pid
196 /var/run/cluster/rgmanager.sk
197
198 faillog_t
199
200 /var/log/btmp.*
201 /var/log/faillog.*
202 /var/log/tallylog.*
203 /var/run/faillock(/.*)?
204
205 hugetlbfs_t
206
207 /dev/hugepages
208 /usr/lib/udev/devices/hugepages
209
210 krb5_host_rcache_t
211
212 /var/tmp/krb5_0.rcache2
213 /var/cache/krb5rcache(/.*)?
214 /var/tmp/nfs_0
215 /var/tmp/DNS_25
216 /var/tmp/host_0
217 /var/tmp/imap_0
218 /var/tmp/HTTP_23
219 /var/tmp/HTTP_48
220 /var/tmp/ldap_55
221 /var/tmp/ldap_487
222 /var/tmp/ldapmap1_0
223
224 lastlog_t
225
226 /var/log/lastlog.*
227
228 postgresql_db_t
229
230 /var/lib/pgsql(/.*)?
231 /var/lib/sepgsql(/.*)?
232 /var/lib/postgres(ql)?(/.*)?
233 /usr/share/jonas/pgsql(/.*)?
234 /usr/lib/pgsql/test/regress(/.*)?
235
236 postgresql_lock_t
237
238
239 postgresql_log_t
240
241 /var/lib/pgsql/.*.log
242 /var/log/rhdb/rhdb(/.*)?
243 /var/log/postgresql(/.*)?
244 /var/log/postgres.log.*
245 /var/lib/pgsql/logfile(/.*)?
246 /var/lib/pgsql/data/log(/.*)?
247 /var/log/sepostgresql.log.*
248 /var/lib/pgsql/data/pg_log(/.*)?
249 /var/lib/sepgsql/pgstartup.log
250
251 postgresql_tmp_t
252
253
254 postgresql_var_run_t
255
256 /var/run/postgresql(/.*)?
257
258 root_t
259
260 /sysroot/ostree/deploy/.*-atomic/deploy(/.*)?
261 /
262 /initrd
263
264 security_t
265
266 /selinux
267
268
270 SELinux requires files to have an extended attribute to define the file
271 type.
272
273 You can see the context of a file using the -Z option to ls
274
275 Policy governs the access confined processes have to these files.
276 SELinux postgresql policy is very flexible allowing users to setup
277 their postgresql processes in as secure a method as possible.
278
279 EQUIVALENCE DIRECTORIES
280
281
282 postgresql policy stores data with multiple different file context
283 types under the /var/lib/pgsql directory. If you would like to store
284 the data in a different directory you can use the semanage command to
285 create an equivalence mapping. If you wanted to store this data under
286 the /srv directory you would execute the following command:
287
288 semanage fcontext -a -e /var/lib/pgsql /srv/pgsql
289 restorecon -R -v /srv/pgsql
290
291 postgresql policy stores data with multiple different file context
292 types under the /var/lib/sepgsql directory. If you would like to store
293 the data in a different directory you can use the semanage command to
294 create an equivalence mapping. If you wanted to store this data under
295 the /srv directory you would execute the following command:
296
297 semanage fcontext -a -e /var/lib/sepgsql /srv/sepgsql
298 restorecon -R -v /srv/sepgsql
299
300 STANDARD FILE CONTEXT
301
302 SELinux defines the file context types for the postgresql, if you
303 wanted to store files with these types in a diffent paths, you need to
304 execute the semanage command to specify alternate labeling and then use
305 restorecon to put the labels on disk.
306
307 semanage fcontext -a -t postgresql_var_run_t '/srv/mypostgresql_con‐
308 tent(/.*)?'
309 restorecon -R -v /srv/mypostgresql_content
310
311 Note: SELinux often uses regular expressions to specify labels that
312 match multiple files.
313
314 The following file types are defined for postgresql:
315
316
317
318 postgresql_db_t
319
320 - Set files with the postgresql_db_t type, if you want to treat the
321 files as postgresql database content.
322
323
324 Paths:
325 /var/lib/pgsql(/.*)?, /var/lib/sepgsql(/.*)?, /var/lib/post‐
326 gres(ql)?(/.*)?, /usr/share/jonas/pgsql(/.*)?,
327 /usr/lib/pgsql/test/regress(/.*)?
328
329
330 postgresql_etc_t
331
332 - Set files with the postgresql_etc_t type, if you want to store post‐
333 gresql files in the /etc directories.
334
335
336 Paths:
337 /etc/postgresql(/.*)?, /etc/sysconfig/pgsql(/.*)?
338
339
340 postgresql_exec_t
341
342 - Set files with the postgresql_exec_t type, if you want to transition
343 an executable to the postgresql_t domain.
344
345
346 Paths:
347 /usr/bin/(se)?postgres, /usr/bin/initdb(.sepgsql)?, /usr/lib/post‐
348 gresql/bin/.*, /usr/bin/pg_ctl, /usr/libexec/postgresql-ctl,
349 /usr/bin/postgresql-check-db-dir,
350 /usr/lib/pgsql/test/regress/pg_regress
351
352
353 postgresql_initrc_exec_t
354
355 - Set files with the postgresql_initrc_exec_t type, if you want to
356 transition an executable to the postgresql_initrc_t domain.
357
358
359
360 postgresql_lock_t
361
362 - Set files with the postgresql_lock_t type, if you want to treat the
363 files as postgresql lock data, stored under the /var/lock directory
364
365
366
367 postgresql_log_t
368
369 - Set files with the postgresql_log_t type, if you want to treat the
370 data as postgresql log data, usually stored under the /var/log direc‐
371 tory.
372
373
374 Paths:
375 /var/lib/pgsql/.*.log, /var/log/rhdb/rhdb(/.*)?, /var/log/post‐
376 gresql(/.*)?, /var/log/postgres.log.*, /var/lib/pgsql/log‐
377 file(/.*)?, /var/lib/pgsql/data/log(/.*)?, /var/log/sepost‐
378 gresql.log.*, /var/lib/pgsql/data/pg_log(/.*)?,
379 /var/lib/sepgsql/pgstartup.log
380
381
382 postgresql_tmp_t
383
384 - Set files with the postgresql_tmp_t type, if you want to store post‐
385 gresql temporary files in the /tmp directories.
386
387
388
389 postgresql_unit_file_t
390
391 - Set files with the postgresql_unit_file_t type, if you want to treat
392 the files as postgresql unit content.
393
394
395
396 postgresql_var_run_t
397
398 - Set files with the postgresql_var_run_t type, if you want to store
399 the postgresql files under the /run or /var/run directory.
400
401
402
403 Note: File context can be temporarily modified with the chcon command.
404 If you want to permanently change the file context you need to use the
405 semanage fcontext command. This will modify the SELinux labeling data‐
406 base. You will need to use restorecon to apply the labels.
407
408
410 semanage fcontext can also be used to manipulate default file context
411 mappings.
412
413 semanage permissive can also be used to manipulate whether or not a
414 process type is permissive.
415
416 semanage module can also be used to enable/disable/install/remove pol‐
417 icy modules.
418
419 semanage port can also be used to manipulate the port definitions
420
421 semanage boolean can also be used to manipulate the booleans
422
423
424 system-config-selinux is a GUI tool available to customize SELinux pol‐
425 icy settings.
426
427
429 This manual page was auto-generated using sepolicy manpage .
430
431
433 selinux(8), postgresql(8), semanage(8), restorecon(8), chcon(1), sepol‐
434 icy(8), setsebool(8)
435
436
437
438postgresql 23-02-03 postgresql_selinux(8)