Como resolver o problema do serviço PostgreSQL não inicia?

3

Trata-se do 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!

Minha primeira pergunta é que o PostgreSQL estava funcionando perfeitamente. Quais coisas provocaram esse problema de repente?

Em segundo lugar, como consertar isso?

    
por Jeff Schaller 24.05.2015 / 01:14

3 respostas

5

É provavelmente o resultado do Bug de Permissões do fsync do Postgres .

A página do Wiki mencionada observa que o problema deveria ser corrigido na Atualização de 2015-06-04 e que afetava os usuários que:

  1. aplicou as atualizações do PostgreSQL 9.4.2, 9.3.7, 9.2.11, 9.1.16 e / ou 9.0.20
  2. possui um ou mais arquivos ou diretórios, ou links simbólicos para um ou mais arquivos ou diretórios, não pertencentes ou graváveis pelo usuário postgres (ou outro proprietário da instalação) no diretório postgres data ( PGDATA ).

Ele continua dizendo que a condição 2 é comum para instalações Debian e Ubuntu com SSL do PostgreSQL 9.1, 9.0 e anteriores, mas pode afetar outros usuários também. A maioria dos usuários em outras plataformas não é afetada, pois todos os arquivos e links em PGDATA são de propriedade do usuário postgres por padrão.

    
por 28.05.2015 / 09:50
2

O texto que você cita é o motivo:

FATAL: could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem":
Permission denied

Se você realmente quiser usar o certificado snakeoil, precisará garantir que o PostgreSQL possa lê-lo. Mas seria melhor gerar seu próprio certificado e usá-lo. (Há uma razão pela qual esses certificados são chamados de snakeoil .)

    
por 24.05.2015 / 01:56
0

A solução é usar um acl, e permitir ao usuário postgres (é chamado postgres, ou psql, verificar seu arquivo de senha) para ler o

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

se o usuário for chamado psql faça isso

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

claro, verifique se o acl está ativo

mount |grep -w / |grep acl

se não editar fstab (fazer cópia antes) e depois dos padrões, colocar acl

, em seguida, mount -o remount / e defina actl com setfacl

    
por 24.05.2015 / 02:15