PostgreSQL 서비스를 시작할 수 없는 문제를 해결하는 방법은 무엇입니까?

PostgreSQL 서비스를 시작할 수 없는 문제를 해결하는 방법은 무엇입니까?

이것은 Metasploit 프레임워크에 관한 것입니다.

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이 잘 작동한다는 것입니다. 갑자기 이 문제가 발생한 이유는 무엇입니까?

둘째, 이 문제를 해결하는 방법은 무엇입니까?

답변1

이는 다음의 결과일 가능성이 높습니다.Postgres fsync 권한 오류.

참조된 Wiki 페이지에는 이 문제가 2015-06-04 업데이트에서 수정될 예정이며 다음 사용자에게 영향을 미친다고 명시되어 있습니다.

  1. 9.4.2, 9.3.7, 9.2.11, 9.1.16 및/또는 9.0.20 PostgreSQL 업데이트 적용
  2. 데이터 디렉터리( ) 아래에 하나 이상의 파일이나 디렉터리가 있거나 사용자 postgres(또는 다른 설치 소유자)가 소유하지 않거나 쓸 수 없는 하나 이상의 파일이나 디렉터리에 대한 기호 링크가 있습니다.postgresPGDATA

조건 2는 SSL이 활성화된 PostgreSQL 9.1, 9.0 및 이전 Debian 및 Ubuntu 설치에 공통적이지만 다른 사용자에게도 영향을 미칠 수 있다고 말합니다. 다른 플랫폼의 모든 파일과 링크는 기본적으로 해당 사용자가 소유하므로 PGDATA다른 플랫폼의 대부분의 사용자는 영향을 받지 않습니다 .postgres

답변2

인용하신 본문에 그 이유는 다음과 같습니다.

치명적: '/etc/ssl/certs/ssl-cert-snakeoil.pem' 파일을 열 수 없습니다:
권한이 거부되었습니다.

정말로 뱀기름 인증서를 사용하려면 PostgreSQL이 이를 읽을 수 있는지 확인해야 합니다. 하지만 자체 인증서를 생성하여 사용하는 것이 더 좋습니다. (이러한 인증서를뱀기름.)

답변3

해결책은 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을 설정합니다.

관련 정보