लिनक्स मशीन में उत्पन्न जावा हीप डंप (और शायद यूनिक्स मशीनों के साथ-साथ) तक पहुंच प्रतिबंधित है। ढेर केवल प्रक्रिया के मालिक द्वारा पढ़ा जा सकता है (एसीएल मास्क 600 पर सेट है)। मैं समझता हूं कि यह सुरक्षा कारणों से है। हालांकि, मैं व्यवहार का संदर्भ देने या व्याख्या करने के लिए कोई दस्तावेज नहीं ढूंढ पाया। क्या कोई मुझे दस्तावेज़ीकरण (यदि कोई हो) पर इंगित कर सकता है? इसके अलावा, क्या इस व्यवहार को ओवरराइड करने का कोई तरीका है?जावा हीप डंप अनुमतियां
उत्तर
हीप डंप JVM प्रक्रिया द्वारा लिखा गया है, जो किसी विशेष उपयोगकर्ता के रूप में चलता है। की तरह फ़ाइल द्वारा बनाई गई लिनक्स प्रक्रिया की तरह, यह उस उपयोगकर्ता के स्वामित्व में होगी।
यदि आप वास्तविक दस्तावेज, here it is चाहते हैं। O_CREAT
के तहत विवरण देखें।
मुझे विश्वास नहीं है कि यह एक ही उपयोगकर्ता द्वारा किसी अन्य फ़ाइल को बनाने जैसा है। मेरे पर्यावरण में, मैं उपयोगकर्ता के लिए 022 पर सेट करने के लिए umask है। जब मैं स्पर्श का उपयोग कर फ़ाइल बनाते हैं, तो फ़ाइल अनुमतियां 644 (rw-r-r-) हैं। वास्तव में, जावा प्रक्रिया द्वारा उत्पन्न लॉग फ़ाइलों को भी उमास्क द्वारा निर्धारित अनुमतियां होती हैं। हालांकि, ढेर डंप 600 (आरडब्ल्यू ----) पर alwys है। मेरा मानना है कि जेवीएम सुरक्षा चिंताओं (बीसीओएस हीप संवेदनशील डेटा को प्राप्त कर सकता है) के कारण अनुमतियों को सेट कर रहा है या सिस्टम कॉल का उपयोग कर रहा है जो इसका कारण बनता है। मैं दस्तावेज की तलाश में हूं जो इसे समझाता है और इसे ओवरराइड करने के किसी भी साधन (एच-डंप के बाद chmod एक optn नहीं है) –
यदि आप गहरे जेवीएम आंतरिक में रुचि रखते हैं, तो आप OpenJDK के लिए स्रोत कोड देख सकते हैं।
यहाँ HeapDumper सेवा के लिए एक कड़ी है: http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/services/heapDumper.cpp
आप में खुदाई, तो आप JVM S_IREAD | S_IWRITE
4373 // create binary file, rewriting existing file if required
4374 int os::create_binary_file(const char* path, bool rewrite_existing) {
4375 int oflags = O_WRONLY | O_CREAT;
4376 if (!rewrite_existing) {
4377 oflags |= O_EXCL;
4378 }
4379 return ::open64(path, oflags, S_IREAD | S_IWRITE);
4380 }
नहीं पूरा जवाब के साथ बाइनरी फ़ाइलें पैदा कर रही है देखेंगे, लेकिन धागा डंप शामिल कर सकते हैं ** वास्तव में ** गोपनीय जानकारी, जिसमें आपका डेटाबेस पासवर्ड शामिल है। तो आप बेहतर उन्हें सुरक्षित रखेंगे। –
इसे 'chmod' के साथ ओवरराइड करें ...? –