मामले में किसी और को SELinux को स्पष्ट रूप से अक्षम किए बिना इसे हल करने के लिए एक रास्ता की तलाश है, तो centos.org पर विकी पेज ने मुझे यह समझने में मदद की कि क्या चल रहा था।
डिफ़ॉल्ट रूप से, अपाचे से बुलाया जाने पर जावा में चल रहा सुरक्षा संदर्भ किसी फाइल को पढ़ने, मेमोरी आवंटित करने, नेटवर्क को एक्सेस करने आदि जैसी चीजों की अनुमति नहीं देता है। इन त्रुटियों को हल करने का सबसे आसान तरीका है सेमोड्यूल और ऑडिट 2 क्लॉक एप्लिकेशन का उपयोग करना। अनिवार्य रूप से, SELinux ऑडिट लॉग (/var /logs/audit/audit.log हो सकता है) की जांच करें, लेकिन मैंने / var / log / संदेशों का उपयोग किया और एवीसी त्रुटियों को निकाला)। लॉग में आपको चीजों को देखना चाहिए
avc: pid = 21415 comm = "java" के लिए {getattr} से इनकार किया
तथा
avc: pid = 21319 comm = "java" के लिए {open} से इनकार किया
वास्तव में, आप निष्पादन, मेमोरी आवंटन और कई अन्य नीतियों के बारे में देखेंगे जिन्हें आप उल्लंघन कर रहे हैं क्योंकि SELinux एप्लिकेशन को चलाने से रोकने और लागू करने के लिए सेट है।
अपने ऑडिट लॉग के साथ नीचे ऑडिट 2 चलाएं:
aud2allow -M myapppolicy <aud.log
जहाँ myapppolicy उस नीति का नाम है जिसे आप बनाना चाहते हैं, जो लॉग इन और ऑडिट में अस्वीकार की गई सभी चीजों को अनुमति देगी। ऊपर वर्णित लॉग फ़ाइल का नाम है। आपके द्वारा यह आदेश चलाने के बाद, दो फ़ाइलें बनाई जानी चाहिए। पहला myapppolicy.te है जो ऑडिट लॉग पर आधारित नीति का एक पाठ प्रतिनिधित्व है। आप इसे पाठ संपादक में खोल सकते हैं और यह सुनिश्चित कर सकते हैं कि आपकी नीति बहुत व्यापक नहीं है। दूसरी फ़ाइल myapppolicy.pp फ़ाइल है जो संकलित नीति पैकेज है जिसे आप सक्षम कर सकते हैं।
पॉलिसी पैकेज को सक्रिय बनाने के लिए निम्नलिखित को चलाएँ और फिर अपनी प्रक्रिया को पुनः प्रयास करें। आपके पास पहले से एक्सेस करने के बाद आपका जावा ऐप उम्मीद के मुताबिक सब कुछ पाने के लिए कई प्रयास कर सकता है क्योंकि आपका जावा ऐप कुछ अन्य पॉलिसी का उल्लंघन कर सकता है। मैं जावा एप्लिकेशन की एक श्रृंखला के लिए इन चरणों को लगभग पांच बार निष्पादित करता हूं जो मैं स्क्रिप्ट के माध्यम से php के माध्यम से चला रहा था।
semodule -i myapppolicy.pp