web-dev-qa-db-ja.com

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は完全に機能していたということです。何がこの問題を突然引き起こしたのですか?

次に、これを修正するにはどうすればよいですか?

3
user109285

Postgres fsyncPermissions Bug の結果である可能性があります。

参照されている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は、SSL対応のDebianおよびUbuntuのPostgreSQL 9.1、9.0、およびそれ以前のインストールに共通ですが、他のユーザーにも影響を与える可能性があります。 PGDATAの下のすべてのファイルとリンクは、デフォルトでpostgresユーザーによって所有されているため、他のプラットフォームのほとんどのユーザーは影響を受けません。

5
TSG

あなたが引用したテキストには理由があります:

致命的:ファイル "/etc/ssl/certs/ssl-cert-snakeoil.pem"を開けませんでした:
アクセス拒否

本当にsnakeoil証明書を使用したい場合は、PostgreSQLがそれを確実に読み取れるようにする必要があります。ただし、独自の証明書を生成し、代わりにそれを使用することをお勧めします。 (これらの証明書が snakeoil と呼ばれるのには理由があります。)

2
roaima

解決策はaclを使用し、postgresユーザー(postgresまたはpsqlと呼ばれ、パスワードファイルをチェックする)が

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

ユーザーがpsqlと呼ばれている場合はこれを行います

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

もちろん、ACLがアクティブかどうかを確認してください

mount |grep -w / |grep acl

fstabを編集しない場合(前にコピーを作成)、デフォルトの後に、aclを配置します

次にmount -o remount /とsetfaclでactlを設定

0
elbarna