संक्षिप्त संस्करण: जावा 7 को SELinux पर चलाने की अनुमति देने का सबसे सुरक्षित तरीका क्या है?
दीर्घ संस्करण:
अग्रिम में क्षमा करें यदि मैं गलत शब्दावली का उपयोग करता हूं। मैं वास्तव में लिनक्स कौशल की कमी के साथ सिर्फ जावा डेवलपर हूं।
मैंने अभी हाल ही में जावा 7 को CentOS रिलीज़ 5.3 (फाइनल) पर स्थापित किया है, जो स्पष्ट रूप से सुरक्षा संवर्धित लिनक्स है। इंस्टॉल पूरा होने के बाद (जो मैंने Oracle से tar.gz फाइल को अनज़िप करके "इंस्टॉल" किया था /usr/java/jdk/jdk1.7.0_25
), मैं भाग गया java -version
और इस समस्या को प्राप्त किया:
Error: dl failure on line 864
Error: failed /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so,
because /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so:
cannot restore segment prot after reloc: Permission denied`
मुझे कुछ लेख मिले जो बताते हैं कि यह SELinux के कारण हो सकता है setenforce 0
और यदि समस्या दूर हो जाती है तो कोशिश करके देखें। मैंने उस कमांड को चलाया और जावा ने काम किया। लेकिन ये वही लेख कहते हैं कि setenforce 0
इंटरनेट से जुड़े होस्ट को छोड़ना खतरनाक है, और मेरा होस्ट इंटरनेट से जुड़ा है।
ऐसे अन्य लेख हैं जो इस अगले दृष्टिकोण का सुझाव देते हैं, लेकिन यह भी कहते हैं कि यह खतरनाक हो सकता है, इसलिए मैंने अभी तक इसकी कोशिश नहीं की है।
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
... उपरोक्त आदेश में कमांड के अंत में पथ को मेरे JDK के पथ से बदल दिया गया है।
मुझे कुछ नहीं मिल रहा है "आधिकारिक" (जो कि कई चीजों का मतलब हो सकता है) जावा 7 को कैसे चलाना है (साथ?) SELinux सुरक्षित रूप से। किसी को भी मेरे लिए कोई जानकारी है?
संपादित करें: मैंने एक लेख खोजा है जो संपादन के लिए संदर्भित है /etc/selinux/config
। मैंने नीचे दिए गए नमूने में दिखाया गया है। यह जावा को चलाने की अनुमति देता है, लेकिन मुझे लगता है कि अब मेरे पास कुछ सुरक्षा छेद हैं।
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
chcon
समाधान उचित लग रहा है। पिछले समाधान की तुलना में बहुत अलग नहीं हैsetenforce 0
।