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. 発生事象
2. 原因
3. 対処方法
4. 備考
・パッケージのバージョン
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
コメント 0