Et gæt:Du bruger Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux eller en af de andre distros, der aktiverer SELinux som standard.
Enten og på dit bestemte OS/version tillader SELinux-politikkerne for PostgreSQL ikke serveren at læse filer uden for PostgreSQL-databiblioteket, eller filen blev oprettet af en tjeneste, der er dækket af en målrettet politik, så den har en etiket, som PostgreSQL ikke er lov til at læse fra.
Du kan bekræfte, om dette er problemet eller ej, ved at køre som root:
setenforce 0
derefter test igen. Kør:
setenforce 1
for at genaktivere SELinux efter test. setenforce
er ikke permanent; SELinux vil alligevel automatisk blive genaktiveret ved genstart. At deaktivere SELinux permanent er normalt ikke en god løsning på problemer som dette; hvis du bekræfter, at problemet er SELinux, kan det udforskes yderligere.
Da du ikke har angivet det OS eller den version, du bruger, PostgreSQL-versionen, den nøjagtige kommando, du kører, ls -al
på filen, \d+
på bordet osv., er det svært at give flere detaljer, eller at vide, om dette er mere end et gæt. Prøv at opdatere dit svar til at inkludere alt det og en ls --lcontext
af filen også.