Um palpite:você está usando Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux ou uma das outras distribuições que habilitam o SELinux por padrão.
Em seu SO/versão em particular, as políticas do SELinux para PostgreSQL não permitem que o servidor leia arquivos fora do diretório de dados do PostgreSQL, ou o arquivo foi criado por um serviço coberto por uma política direcionada, portanto, possui um rótulo de que o PostgreSQL não é permitido ler.
Você pode confirmar se este é ou não o problema executando, como root:
setenforce 0
depois reteste. Correr:
setenforce 1
para reativar o SELinux após o teste.
setenforce
não é permanente; O SELinux será reativado automaticamente na reinicialização de qualquer maneira. Desabilitar o SELinux permanentemente não costuma ser uma boa solução para problemas como este; se você confirmar que o problema é SELinux, ele pode ser mais explorado. Como você não especificou o SO ou a versão que está usando, a versão do PostgreSQL, o comando exato que está executando,
ls -al
no arquivo, \d+
sobre a mesa, etc, é difícil dar mais detalhes ou saber se isso é mais do que um palpite. Tente atualizar sua resposta para incluir tudo isso e um ls --lcontext
do arquivo também.