पीएएम मॉड्यूल को एक साथ जोड़कर ऐसा करना संभव है। लेकिन इससे पहले कि मैं किसी भी विवरण में शामिल होऊं:
गलत तरीके से PAM कैन और WILL आपको अपने सिस्टम में लॉग इन करने से रोकेगा
शुक्र है कि आप हमेशा एकल उपयोगकर्ता मोड में बूट कर सकते हैं और समस्या को ठीक कर सकते हैं, लेकिन बस चेतावनी दी जाए कि PAM कुछ ऐसा नहीं है जिसे आप आवश्यकता से अधिक गड़बड़ करना चाहते हैं।
वैसे भी, इसके पीछे विचार यह है कि यह सुनिश्चित करने के लिए स्टैकिंग पीएएम मॉड्यूल का उपयोग करना संभव है pam-google-authenticator
, pam_unix
(यह आपके पासवर्ड की जांच करता है) और प्रमाणपत्र मॉड्यूल सभी को आपको एक्सेस करने की अनुमति देने में सफल होना है। डिफ़ॉल्ट रूप से, PAM को किसी भी प्रमाणीकरण मॉड्यूल को प्रमाणित करने की अनुमति देने के लिए कॉन्फ़िगर किया गया है, दूसरों को लंघन।
/Etc/pam.d/common-auth में, आप शीर्ष रेखा के पास देखेंगे जो निम्न के जैसा दिखता है:
auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass
यह पीएएम को बताता है कि pam_unix.so
सफल होना चाहिए , यह अगले दो नियमों को छोड़ देगा (जो आमतौर पर एक और प्रमाणीकरण मॉड्यूल हैं और फिर pam_deny.so
) और वैकल्पिक मॉड्यूल के लिए आगे बढ़ें। हालांकि, क्या मॉड्यूल विफल होना चाहिए, फिर इसे नजरअंदाज कर दिया जाएगा, और नियंत्रण श्रृंखला में अगले मॉड्यूल पर पारित होगा। यह प्रत्येक प्रमाणीकरण मॉड्यूल को तब तक जारी रखता है जब तक कि वैकल्पिक ब्लॉक पर नियंत्रण नहीं हो जाता है, या PAM pam_deny.so को हिट कर देता है और वहीं विफल हो जाता है।
यह सुनिश्चित करने के लिए इसका लाभ उठाया जा सकता है pam-google-authenticator
, pam_unix.so
और आपके प्रमाणपत्र PAM मॉड्यूल को आपको एक्सेस करने की अनुमति देने में सफल होना चाहिए। मुझे Google प्रमाणक मॉड्यूल या आपके द्वारा उपयोग किए जा रहे प्रमाणपत्र मॉड्यूल का नाम नहीं पता है, लेकिन आपको उन्हें अपनी सामान्य-फ़ाइल में ढूंढने में सक्षम होना चाहिए। तो शीर्ष पर इस तरह से कुछ रखकर:
auth requisite pam_unix.so nullok_secure
auth requisite pam_google_authenticator.so
auth requisite pam_certificate_auth.so
auth [success=<n>] pam_permit.so
जगह <n>
pam_permit.so मॉड्यूल यहाँ और अगले के बीच मॉड्यूल की संख्या के साथ pam_permit.so
मॉड्यूल - दूसरे शब्दों में यह करने के लिए सर्वोच्च प्रमाणन मॉड्यूल के सेट किए जाने चाहिए [सफलता = n डिफ़ॉल्ट = उपेक्षा] कोड + 1. इस वाक्य रचना थोड़ा अजीब है , लेकिन उपरोक्त मॉड्यूल के सफल होने के बाद अनिवार्य रूप से स्कीम मॉड्यूल को छोड़ देता है।
बेशक, आप सोच रहे होंगे कि इस तीन-चरण प्रमाणीकरण को केवल अपने उपयोगकर्ता खाते में कैसे सीमित किया जाए। यह एक pam_succeed_if.so
मॉड्यूल के साथ किया जा सकता है , और ऊपर वर्णित तीन-चरण वाले ऑर्थोक ब्लॉक के ऊपर डाला जाना चाहिए:
auth [success=ignore default=4] pam_succeed_if.so user = <username>
<username>
आपके उपयोगकर्ता नाम की जगह कहां है। यह पंक्ति बस यह कहती है कि pam_succeed_if.so सफल होना चाहिए (उर्फ आपका उपयोगकर्ता नाम उस रेखा पर उपयोगकर्ता नाम से मेल खाता है) तो PAM को अगले मॉड्यूल के साथ आगे बढ़ना चाहिए, जो कि तीन-चरणीय मॉड्यूल हैं। अन्यथा, पीएएम को असली मॉड्यूल पर कूदना चाहिए, जो इस एक से 4 मॉड्यूल दूर हैं।
कई चीजों से मेल खाने के लिए, एक निश्चित उपयोगकर्ता नाम के साथ समूह की सदस्यता के लिए, कई लाइनों का उपयोग किया जाना चाहिए, उदाहरण के लिए:
auth [success=1 default=ignore] pam_succeed_if.so user = <username>
auth [success=ignore default=4] pam_succeed_if.so user ingroup <group>
इनमें से किसी को भी करने से पहले, मैं सामान्य-ओरिजनल फ़ाइल का बैकअप ले लूंगा, और अपने आप को सिंगल यूज़र मोड से परिचित करवाऊँगा और इमरजेंसी की स्थिति में पुरानी फाइल को कैसे रिस्टोर करूँगा। यह कॉन्फ़िगरेशन मेरे द्वारा परीक्षण नहीं किया गया है, लेकिन यह काम करना चाहिए।
इसे पहली बार जांचने के लिए, एक रूट शेल या दो ओपन प्राप्त करें, और बस उन्हें अकेला छोड़ दें। कुछ भी गलत होने की स्थिति में ये कमियां बन जाती हैं, क्योंकि आप बैकअप के साथ आसानी से आम-ऑर्कलेट की जगह ले सकते हैं। फिर, ये बदलाव करें। अगला, su
अपने उपयोगकर्ता खाते में लॉग इन करने का उपयोग करने का प्रयास करें - आपको तीन-चरण प्रमाणीकरण प्रक्रिया से गुजरना चाहिए।
pam_succeed_if.so
मॉड्यूल के लिए पूर्ण प्रलेखन http://linux.die.net/man/8/pam_succeed_if पर पाया जा सकता है