Squid shm_open: परवानगी नाकारली — सामायिक मेमरीची मालकी तपासा
Squidच्या सामायिक मेमरी मालकीतील अपयशांना PID, लॉग आणि कॅश डिरेक्टरी परवानगी त्रुटींपासून वेगळे करा.
एकाच अपयशी Squid स्टार्टअपमध्ये Could not read pid file आणि shm_open(...): Permission denied दोन्ही दिसू शकतात. ते वेगवेगळ्या संसाधनांचा उल्लेख करतात. कॅश डिरेक्टरीची मालकी दुरुस्त केल्याने त्यातील एकही स्वतःहून दुरुस्त होत नाही.
Linux वर POSIX सामायिक मेमरी ऑब्जेक्ट सामान्यतः /dev/shm अंतर्गत दर्शविला जातो. त्याचा मालक आणि प्रवेश मोड महत्त्वाचे आहेत. त्यामुळे दुसऱ्या रनटाइम ओळखीने सोडलेला ऑब्जेक्ट squid.conf वाचनीय आणि ऐकणारा पोर्ट मोकळा असतानाही पुढील प्रक्रिया अपयशी करू शकतो.
हा इन्स्टन्स कसा सुरू झाला ते पुन्हा उभे करा
सेवेच्या नेहमीच्या सुरुवातीची तुलना समस्या सोडवताना वापरलेल्या कोणत्याही मॅन्युअल सुरुवातीशी करा. मॅन्युअली सुरू केलेली प्रक्रिया आणि पॅकेज केलेली सेवा वेगळे वापरकर्ते, मार्ग किंवा कॉन्फिगरेशन फाइल्स वापरू शकतात. ऑब्जेक्ट जुना मानण्यापूर्वी दुसरा Squid इन्स्टन्स अजून चालू आहे का ते निश्चित करा.
नंतर अपयशी होणारी नेमकी क्रिया वाचा. PID त्रुटी कॉन्फिगर केलेले PID स्थान आणि त्याची मूळ डिरेक्टरीशी संबंधित आहे. लॉग त्रुटी लॉग फाइल किंवा डिरेक्टरीशी संबंधित आहे. कॅश सुरुवातीची त्रुटी साठवणुकीशी संबंधित आहे. shm_open त्रुटी नामनिर्देशित सामायिक मेमरी ऑब्जेक्टशी संबंधित आहे आणि प्रक्रियेवर लागू होणारे सुरक्षा धोरणही समाविष्ट करू शकते.
प्रत्येक संसाधनासाठी आवश्यक रनटाइम प्रवेशाची त्याच्या सध्याच्या मालक आणि मोडशी तुलना करा. सामान्य परवानग्या पुरेशा वाटल्यास संबंधित SELinux किंवा AppArmor नकाराचे पुरावे तपासा. फक्त “Permission denied” कोणत्या स्तराने प्रवेश नाकारला हे सांगत नाही.
दुसरी समस्या निर्माण न करता मालकी दुरुस्त करा
रनटाइम खाते इन्स्टॉलेशनच्या सेवा कॉन्फिगरेशनशी सुसंगत ठेवा. सर्व काही nobody वर बदलल्यास सहाय्यक प्रवेश तुटू शकतो आणि सेवा-व्यवस्थापित फाइल्सशी नवी विसंगती येऊ शकते.
/dev/shm मधील Squid सारखे दिसणारे प्रत्येक ऑब्जेक्ट हटवणेही चांगला पहिला टप्पा नाही. नामनिर्देशित ऑब्जेक्ट सक्रिय इन्स्टन्सचा असू शकतो. आवश्यक असल्यास साफसफाई प्रभावित सेवा बंद असताना पुष्टी केलेल्या सोडून दिलेल्या संसाधनावर लक्ष्यित करावी आणि नंतर नेहमीच्या सेवा यंत्रणेद्वारे सुरू करावे.
उपयुक्त परिणाम म्हणजे सुसंगत स्टार्टअप आणि मालकी मॉडेल. त्रुटी नाहीशी होईपर्यंत root म्हणून एक आदेश चालवल्यास पुढील नियमित पुनःसुरुवातीत तीच समस्या राहू शकते.