केही नबदल्ने सम्पादित 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 इन्टरफेस र यसका समर्थित क्षेत्रहरू समेट्छ।

सम्बन्धित लेखहरू