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 તરીકે એક આદેશ ચલાવવાથી આગલું નિયમિત પુનઃપ્રારંભ બરાબર એ જ સમસ્યા સાથે રહી શકે છે.