काहीही न बदलणारी संपादित mac.py हे नेहमीचे पहिले लक्षण आहे. डिस्कवरील फाइल Access Server चालवतो ती नाही; प्रमाणीकरण सेवा स्क्रिप्ट सर्व्हरच्या कॉन्फिग डेटाबेसमधून लोड करते, आणि तीच साठवलेली प्रत लॉगिन ठरवते. साठवलेले मूल्य बदलले जाईपर्यंत प्रत्येक चाचणी फक्त जुनी स्क्रिप्ट अजून चालते हेच सिद्ध करते.

काम तीन अटी ठरवतात: मूल्य कधीही कॉन्फिग डेटाबेसमध्ये टाकले गेले का, सेवेला ते पुन्हा लोड करण्याचा आदेश दिला गेला का, आणि तुम्ही बदललेला कोड प्रत्येक कनेक्शनवर खरोखर चालतो का. प्रत्येकाचे लक्षण वेगळे आहे, आणि चुकीचे दुरुस्त करणे देखभालीचा वेळ वाया घालवते.

फाइल स्रोत आहे, चालू असलेली प्रत नाही

Access Server post-auth स्क्रिप्ट auth.module.post_auth_script या किल्लीखाली ठेवतो. फाइल संपादित केल्याने फक्त तुमची कार्यरत प्रत अद्ययावत होते. डेमन साठवलेले मूल्य वाचतो, म्हणून जुनी नोंद हटवून नवीन फाइल तिच्या जागी ठेवेपर्यंत बदल अदृश्य राहतो. तेच साठवलेले मूल्य प्रमाणीकरण सेवा पाहते ती एकमेव प्रत आहे.

बदलण्यापूर्वी ते वाचा. ते तुम्ही संपादित केलेल्या फाइलशी जुळत असेल, तर समस्या साठवणीत नाही आणि व्याप्तीच्या प्रश्नाकडे जा. ते जुनी आवृत्ती दाखवत असेल, तर बदल सेवेपर्यंत पोहोचलाच नाही.

./sacli -k auth.module.post_auth_script ConfigGet

साठवलेली प्रत बदला, नंतर ती लागू करा

लिहिण्यापूर्वी हटवणे ही सजावट नाही. ConfigPut हे --value_file सह एकाच पायरीत मूल्य बदलते, आणि आधी ConfigDel केल्याने जुनी किंवा खराब नोंद राहणे अशक्य होते. सुरुवात करण्यापूर्वी चालत्या स्क्रिप्टची प्रत स्क्रिप्ट डिरेक्टरीबाहेर ठेवा.

./sacli -k auth.module.post_auth_script ConfigDel
# store the file, then apply it
./sacli -k auth.module.post_auth_script --value_file=/root/post_auth.py ConfigPut
./sacli start

sacli start बदललेली कॉन्फिग अंतर्गत सेवांवर लागू करतो, आणि त्यामुळेच नवीन स्क्रिप्ट अमलात येते. हे संपूर्ण मशीन किंवा डेमन पुन्हा सुरू करण्यासारखे नाही, आणि तुमचा बदल त्याची मागणी करत नसेल तर त्याने ते बदलू नये.

मूल्य फाइलसाठी निरपेक्ष मार्ग वापरा आणि root ती वाचू शकतो याची खात्री करा. तुमच्या शेलमधून सुटणारा पण सेवा खात्यातून न सुटणारा मार्ग असे साठवलेले मूल्य देतो जे ConfigGet मध्ये बरोबर दिसते आणि पहिल्या लॉगिनला अयशस्वी होते. sacli start नंतर साठवलेला निकाल आणखी एकदा तपासा, आधी नाही.

मॉड्यूल व्याप्ती की प्रत्येक कनेक्शन: क्वेरी कुठे असावी

Python मॉड्यूल-स्तरीय विधाने एकदाच चालवतो, स्क्रिप्ट लोड होताना. म्हणून फाइलच्या वर लिहिलेली डेटाबेस क्वेरी लोड होताना तक्ता वाचते आणि ते उत्तर पुढील प्रत्येक कनेक्शनसाठी ठेवते. बदल काहीच करत नसल्यासारखा वाटण्याचे हे दुसरे कारण आहे: कोड चालतो, पण तुम्ही अपेक्षा करता तेव्हा नाही.

क्वेरी post_auth हँडलरमध्ये ठेवा जेणेकरून ती प्रत्येक प्रमाणीकरणाला चालेल. दस्तऐवजीकृत स्वाक्षरी ठेवा, हँडलरला मिळणारा प्रमाणीकरण निकाल जुळवा, आणि रिकाम्या संख्येऐवजी तीच वस्तू परत द्या.

कनेक्शन हाताळणीही हँडलरमध्ये ठेवा. आयात करताना उघडलेले कनेक्शन पहिल्या वापरकर्त्याच्या लॉगिनपूर्वी सर्व्हर बंद करू शकतो, आणि त्यातून येणारी त्रुटी तुटलेल्या स्क्रिप्टसारखी नाही तर नाकारलेल्या क्रेडेन्शियलसारखी दिसते.

नाकारण्याचे दोन मार्ग, एक मालक

निर्णय स्थानिक क्वेरी असेल तर निकालाचा मालक Python हँडलर असतो. तो बाह्य HTTP तपासणी असेल तर आदेशाची निर्गमन स्थिती उत्तर वाहून न्यायला द्या: शून्य नसलेल्या कोडने बाहेर पडणारे आवरण लॉगिन नाकारते, आणि शेवटच्या आदेशाची स्थिती स्पष्ट exit शिवाय स्क्रिप्टची स्थिती होते.

गुपित प्रक्रिया यादीबाहेर ठेवा. root वाचू शकणारी फाइल किंवा सेवेने पाठवलेले पर्यावरण मूल्य, कोणताही स्थानिक वापरकर्ता ps मधून वाचू शकणाऱ्या वितर्कापेक्षा सुरक्षित आहे. कॉलपूर्वी टोक व्हेरिएबलमध्ये स्थिर करा, जेणेकरून टाइपो कॉन्फिगरेशनच्या वेळी अयशस्वी होईल, कोणाच्या लॉगिनच्या वेळी नाही. ते गुपित इतर कोणत्याही क्रेडेन्शियलप्रमाणे फिरवत राहा.

प्रत्येक तपासणीसाठी एक मालक निवडा. डेटाबेसला विचारणारी आणि HTTP सेवेला कॉल करणारी स्क्रिप्ट, दोन्ही विसंगत असताना त्यासाठी जाहीर प्राधान्यक्रम नियम आवश्यक आहे, अन्यथा लॉगमधील नाकारण्याचे कारण वापरकर्त्याला सांगितलेल्याशी जुळणार नाही.

प्रशासकाला बाहेर न करता लागू करा

दोन सुरक्षा उपाय बदल परत करण्यायोग्य करतात: स्क्रिप्टवर अवलंबून नसलेले दुसरे प्रशासक खाते, आणि स्क्रिप्ट डिरेक्टरीबाहेर ठेवलेली ज्ञात-चांगली प्रत. देखभालीच्या वेळी बदल लागू करा, नंतर डिस्कनेक्ट करण्यापूर्वी एक चाचणी लॉगिन आणि एक जाणूनबुजून नाकारणे पाहा. लॉग प्रमाणीकरण निर्णयाऐवजी वाक्यरचना त्रुटी दाखवत असेल, तर साठवलेली स्क्रिप्ट तुटलेली आहे आणि प्रत्येक लॉगिन अयशस्वी होईल.

दोन अटी थांबा म्हणतात: तुम्ही root म्हणून मूल्य फाइल वाचू शकत नाही, किंवा प्रशासन इंटरफेसपर्यंत दुसरा मार्ग नाही. दोन्ही लहान बदलाला बाहेर काढण्यात बदलतात, आणि दिवसाच्या शेवटी उत्पादन सर्व्हरवर चाचणी करण्यासारखे एकही नाही. Access Server दस्तऐवज post-auth इंटरफेस आणि त्याची समर्थित क्षेत्रे समाविष्ट करतात.

संबंधित लेख