Przypuszczenie:używasz Fedory, Red Hat Enterprise Linux, CentOS, Scientific Linux lub jednej z innych dystrybucji, które domyślnie włączają SELinux.
Zarówno w Twoim konkretnym systemie operacyjnym/wersji zasady SELinux dla PostgreSQL nie zezwalają serwerowi na odczytywanie plików spoza katalogu danych PostgreSQL lub plik został utworzony przez usługę objętą docelową polityką, więc ma etykietę, której nie dotyczy PostgreSQL wolno czytać z.
Możesz sprawdzić, czy to jest problem, uruchamiając jako root:
setenforce 0
następnie ponowne testowanie. Uruchom:
setenforce 1
aby ponownie włączyć SELinux po testach. setenforce
nie jest trwały; SELinux i tak zostanie automatycznie ponownie włączony po ponownym uruchomieniu. Wyłączenie SELinux na stałe zazwyczaj nie jest dobrym rozwiązaniem dla takich problemów; jeśli potwierdzisz, że problem dotyczy SELinux, możesz go dalej zbadać.
Ponieważ nie określiłeś systemu operacyjnego ani wersji, której używasz, wersję PostgreSQL, dokładnie uruchomione polecenie, ls -al
w pliku \d+
na stole itp., trudno podać więcej szczegółów lub stwierdzić, czy to więcej niż zgadywanie. Spróbuj zaktualizować swoją odpowiedź tak, aby zawierała to wszystko oraz ls --lcontext
pliku.