SSブログ

PostgreSQL 9.1起動時のPermission deniedへの対応 [Debian]

Debian 8 において、PostgreSQL 9.1 の起動ができなくなってしまった。

・パッケージのバージョン
 postgresql-9.1 9.1.16-0+deb7u1
 postgresql-common 165

・エラーメッセージ
 "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied

原因および対処方法の詳細は、以下の通りである。

1. 発生事象


下記のような状況となり、PostgreSQL の起動に失敗する。

[postgresql@9.1-main]
could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied
startup process (PID 5060) exited with exit code 1
aborting startup due to startup process failure

[systemd]
postgresql@9.1-main.service: control process exited, code=exited status=1
Failed to start PostgreSQL Cluster 9.1-main.
Unit postgresql@9.1-main.service entered failed state.

2. 原因


(1) PostgreSQL のバグと思われる。


アクセス可能かではなく、所有者なのかをチェックしているように思われる。
少なくとも、/etc/ssl/certs/ssl-cert-snakeoil.pem は参照可能である。

[シンボリック・リンクの状況]
# pwd
/var/lib/postgresql/9.1/main
# ls -l server.*
lrwxrwxrwx 1 root root 36 Jun  2 13:10 server.crt -> \
/etc/ssl/certs/ssl-cert-snakeoil.pem
lrwxrwxrwx 1 root root 38 Jun  2 13:10 server.key -> \
/etc/ssl/private/ssl-cert-snakeoil.key

[シンボリック・リンク先の状況]
# pwd
/etc/ssl
# ls -l
total 36
drwxr-xr-x 2 root root     20480 May 30 02:12 certs/
-rw-r--r-- 1 root root     10835 Mar 19  2013 openssl.cnf
drwx--x--- 2 root ssl-cert  4096 Feb 22  2009 private/
# ls -l certs/ssl-cert-snakeoil.pem
-rw-r--r-- 1 root root 644 Feb 22  2009 certs/ssl-cert-snakeoil.pem
# ls -l private/ssl-cert-snakeoil.key
-rw-r----- 1 root ssl-cert 887 Feb 22  2009 private/ssl-cert-snakeoil.key

[postgres ユーザーの所属グループの状況]
# grep postgres /etc/group
ssl-cert:x:104:postgres
postgres:x:122:

3. 対処方法


取り敢えず、下記の手順の実施により、状況が改善される。

(1) 当該ファイルの所有者を root から postgres に変更する。

# cd /etc/ssl
# chown postgres certs/ssl-cert-snakeoil.pem
# chown postgres private/ssl-cert-snakeoil.key

# ls -l certs/ssl-cert-snakeoil.pem
-rw-r--r-- 1 postgres root 644 Feb 22  2009 certs/ssl-cert-snakeoil.pem
# ls -l private/ssl-cert-snakeoil.key
-rw-r----- 1 postgres ssl-cert 887 Feb 22  2009 \
private/ssl-cert-snakeoil.key


(2) PostgreSQL の起動

# systemctl start postgresql@9.1-main.service
# systemctl status postgresql@9.1-main.service


(3) PostgreSQL が正常に起動できた後に root 所有に戻す。


PostgreSQL が正常に起動できた後は、root 所有に戻しても問題は発生しない。


4. 備考


(1) 参考資料


https://forums.kali.org/showthread.php?25638-Postgresql-won-t-start



nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。