एक अनुमान:आप फेडोरा, रेड हैट एंटरप्राइज लिनक्स, सेंटोस, साइंटिफिक लिनक्स, या अन्य डिस्ट्रो में से एक का उपयोग कर रहे हैं जो डिफ़ॉल्ट रूप से SELinux को सक्षम करता है।
या तो और आपके विशेष OS/संस्करण पर PostgreSQL के लिए SELinux नीतियां सर्वर को PostgreSQL डेटा निर्देशिका के बाहर फ़ाइलों को पढ़ने की अनुमति नहीं देती हैं, या फ़ाइल एक लक्षित नीति द्वारा कवर की गई सेवा द्वारा बनाई गई थी, इसलिए इसमें एक लेबल है जो PostgreSQL नहीं है से पढ़ने की अनुमति है।
रूट के रूप में चलाकर आप पुष्टि कर सकते हैं कि यह समस्या है या नहीं:
setenforce 0
फिर पुन:परीक्षण। भागो:
setenforce 1
परीक्षण के बाद SELinux को पुन:सक्षम करने के लिए। setenforce
स्थायी नहीं है; SELinux वैसे भी रिबूट होने पर स्वतः पुनः सक्षम हो जाएगा। SELinux को स्थायी रूप से अक्षम करना आमतौर पर इस तरह के मुद्दों के लिए एक अच्छा समाधान नहीं है; यदि आप पुष्टि करते हैं कि समस्या SELinux है तो इसे और अधिक खोजा जा सकता है।
चूँकि आपने अपने द्वारा उपयोग किए जा रहे OS या संस्करण को निर्दिष्ट नहीं किया है, PostgreSQL संस्करण, सटीक कमांड जो आप चला रहे हैं, ls -al
फ़ाइल पर, \d+
मेज पर, आदि, कोई और विवरण देना, या यह जानना कठिन है कि क्या यह अनुमान से अधिक है। वह सब और एक ls --lcontext
. शामिल करने के लिए अपना उत्तर अपडेट करने का प्रयास करें फ़ाइल का भी।