Предположение:Вие използвате Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux или някоя от другите дистрибуции, които активират SELinux по подразбиране.
Във вашата конкретна ОС/версия политиките на SELinux за PostgreSQL не позволяват на сървъра да чете файлове извън директорията с данни на PostgreSQL или файлът е създаден от услуга, обхваната от насочена политика, така че има етикет, че PostgreSQL не е разрешено за четене от.
Можете да потвърдите дали това е проблемът или не, като стартирате от root:
setenforce 0
след това повторно тестване. Пусни:
setenforce 1
за да активирате отново SELinux след тестване. setenforce
не е постоянен; SELinux така или иначе автоматично ще бъде активиран отново при рестартиране. Постоянното деактивиране на SELinux обикновено не е добро решение за проблеми като този; ако потвърдите, че проблемът е SELinux, той може да бъде проучен допълнително.
Тъй като не сте посочили операционната система или версията, която използвате, версията на PostgreSQL, точната команда, която изпълнявате, ls -al
във файла, \d+
на масата и т.н., трудно е да се дадат повече подробности или да се разбере дали това е нещо повече от предположение. Опитайте да актуализирате отговора си, за да включите всичко това и ls --lcontext
на файла също.