Как решить проблему службы PostgreSQL не запускается?

Речь идет о Metasploit Framework.

root@kali:~# service postgresql start [....] Starting PostgreSQL 9.1 database server: main[....] The PostgreSQL server failed to start. Please check the log output: 2015-05-23 19:07:58 EDT LOG: database system was interrupted; last known up at 2015-05-23 16:52:00 EDT 2015-05-23 19:07:58 EDT FATAL: could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied 2015-05-23 19:07:58 EDT LOG: startup process (PID 3466) exited with exit code 1 2015-05-23 19:07:58 EDT LOG: aborting startup due to startup [FAILss failure ... failed! failed! 

Мой первый вопрос: PostgreSQL работает отлично. Что вызвало эту проблему внезапно?

Во-вторых, как это исправить?

Вероятно, это результат ошибки Postgres fsync Permissions .

На упомянутой странице Wiki отмечается, что проблема должна была быть исправлена ​​в выпуске обновлений 2015-06-04, и что это затронуло пользователей, которые:

  1. применяли обновления 9.4.2, 9.3.7, 9.2.11, 9.1.16 и / или 9.0.20 PostgreSQL
  2. имеют один или несколько файлов или каталогов или символические ссылки на один или несколько файлов или каталогов, которые не принадлежат или не могут быть записаны пользователем postgres (или другим владельцем установки) в каталоге данных postgres ( PGDATA ).

Далее следует, что условие 2 является общим для установок Debian и Ubuntu с поддержкой SSL в PostgreSQL 9.1, 9.0 и более ранних версиях, но может также повлиять на других пользователей. Большинство пользователей на других платформах не затрагиваются, так как все файлы и ссылки под PGDATA принадлежат пользователю postgres по умолчанию.

В тексте, который вы указали, есть причина:

FATAL: не удалось открыть файл «/etc/ssl/certs/ssl-cert-snakeoil.pem»:
Доступ запрещен

Если вы действительно хотите использовать сертификат snakeoil, вам необходимо убедиться, что PostgreSQL может его прочитать. Но было бы лучше создать собственный сертификат и использовать его вместо этого. (Есть причина, почему эти сертификаты называются snakeoil .)

Решение состоит в том, чтобы использовать acl и разрешить пользователю postgres (называется postgres или psql, проверять ваш файл паролей), чтобы читать

 /etc/ssl/certs/ssl-cert-snakeoil.pem 

если пользователь называется psql, сделайте это

 setfacl -mu:psql:r-- /etc/ssl/certs/ssl-cert-snakeoil.pem 

конечно, проверьте, активен ли acl

 mount |grep -w / |grep acl 

если не редактировать fstab (сделать копию до) и после значений по умолчанию, поместите acl

затем mount -o remount / и установить actl с помощью setfacl