Un'ipotesi:stai usando Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux o una delle altre distribuzioni che abilitano SELinux per impostazione predefinita.
In entrambi i casi e sul tuo particolare sistema operativo/versione le politiche di SELinux per PostgreSQL non consentono al server di leggere file al di fuori della directory dei dati di PostgreSQL, oppure il file è stato creato da un servizio coperto da una politica mirata, quindi ha un'etichetta che PostgreSQL non è permesso di leggere da.
Puoi confermare se questo è il problema o meno eseguendo, come root:
setenforce 0
quindi riprovare. Corri:
setenforce 1
per riattivare SELinux dopo il test. setenforce
non è permanente; SELinux verrà comunque riattivato automaticamente al riavvio. La disabilitazione permanente di SELinux di solito non è una buona soluzione per problemi come questo; se confermi che il problema è SELinux, può essere esplorato ulteriormente.
Dal momento che non hai specificato il sistema operativo o la versione che stai utilizzando, la versione di PostgreSQL, il comando esatto che stai eseguendo, ls -al
nel file, \d+
sul tavolo, ecc, è difficile fornire ulteriori dettagli o sapere se questa è più di un'ipotesi. Prova ad aggiornare la tua risposta per includere tutto questo e un ls --lcontext
anche del file.