क्या आपने कभी सोचा है कि लिनक्स मल्टी-यूज़र वातावरण को कुशलतापूर्वक कैसे प्रबंधित करता है? इस लेख में हम बताते हैं कि लिनक्स उपयोगकर्ता पासवर्ड और लॉगिन को कैसे संग्रहीत और प्रबंधित करता है।
/etc/passwd फ़ाइल की खोज
जब कोई उपयोगकर्ता उपयोगकर्ता नाम और पासवर्ड दर्ज करता है, तो लिनक्स दर्ज पासवर्ड की जांच "/etc" डायरेक्टरी में कई फ़ाइलों में एक प्रविष्टि के खिलाफ करता है।
"/etc/passwd" सबसे महत्वपूर्ण फ़ाइलों में से एक है जो उपयोगकर्ता विवरण संग्रहीत करता है।
इस फ़ाइल में अंतिम प्रविष्टि "carbon" उपयोगकर्ताओं से मेल खाती है। कोलन (:) द्वारा अलग की गई जानकारी के कई फ़ील्ड हैं।
carbon: उस उपयोगकर्ता का नाम जिसके लिए यह प्रविष्टि मेल खाती है।x: इंगित करता है कि उपयोगकर्ता के लिए एक पासवर्ड मौजूद है। हालांकि, पासवर्ड "/etc/shadow" फ़ाइल में संग्रहीत है। यदिxके बजाय यह!सिंबल दिखाता है, तो यह इंगित करता है कि पासवर्ड मौजूद नहीं है।1000: इस उपयोगकर्ता की उपयोगकर्ता ID।1000: उस ग्रुप की ग्रुप ID जिससे यह उपयोगकर्ता संबंधित है।carbon, , ,: पूर्ण नाम और टेलीफोन नंबर सहित कई सूचना फ़ील्ड इंगित करता है। यहां, कोई टेलीफोन नंबर प्रदान नहीं किया गया है।/home/carbon: इस उपयोगकर्ता को असाइन की गई होम डायरेक्टरी का स्थान।/bin/bash: इस उपयोगकर्ता को असाइन किया गया डिफ़ॉल्ट शेल।
आइए एक और उपयोगकर्ता बनाएं जिसके लिए कुछ टेलीफोन नंबर संग्रहीत किए गए हों। उपयोगकर्ता "pluto" को adduser कमांड का उपयोग करके सिस्टम में जोड़ा गया है।
फिर से "/etc/passwd" फ़ाइल को देखते हुए, हम उपयोगकर्ता "pluto" के लिए पूरी जानकारी देख सकते हैं। जिसमें अल्पविराम से अलग पूर्ण नाम और नंबरों की सूची वाला फ़ील्ड "GECOS फ़ील्ड" कहलाता है।
जब भी कोई उपयोगकर्ता बनाया जाता है, तो असाइन किए जाने वाले होम डायरेक्टरी और डिफ़ॉल्ट शेल के मूल्यों को "/etc/adduser.conf" फ़ाइल में निर्दिष्ट किया जाता है।
बनाए गए उपयोगकर्ताओं के लिए उपयोगकर्ता ID 1000 से शुरू होकर 59999 तक चलते हैं।
उपयोगकर्ता "carbon" केवल cat कमांड का उपयोग करके "/etc/passwd" फ़ाइल की प्रविष्टियों को देखने में सक्षम था। आइए इसकी अनुमतियों पर एक नज़र डालें।
केवल "रूट" उपयोगकर्ता फ़ाइल में लिख सकता है। अन्य उपयोगकर्ता केवल फ़ाइल पढ़ सकते हैं। चूंकि यह फ़ाइल सभी के द्वारा पढ़ी जा सकती है, यहां पासवर्ड संग्रहीत करना आदर्श नहीं है। इसके बजाय इसे "/etc/shadow" नामक दूसरी फ़ाइल में संग्रहीत किया जाता है।
/etc/shadow फ़ाइल की खोज
अब आइए उपयोगकर्ताओं "carbon" और "pluto" के लिए संग्रहीत पासवर्ड को "/etc/shadow" फ़ाइल में देखने का प्रयास करें।
"/etc/shadow" फ़ाइल की अनुमतियों को देखते हुए, हम देख सकते हैं कि केवल "रूट" उपयोगकर्ता फ़ाइल को पढ़ और लिख सकता है। साथ ही केवल "shadow" ग्रुप के सदस्य फ़ाइल पढ़ सकते हैं। वास्तव में, "shadow" ग्रुप खाली है लेकिन इस फ़ाइल के लिए वाक्यात्मक रूप से आवश्यक है।
"रूट" के रूप में लॉग इन करके, हम "/etc/shadow" की अंतिम दस लाइनें देख सकते हैं। "/etc/passwd" में हर प्रविष्टि के लिए, इस फ़ाइल में एक संबंधित प्रविष्टि होती है। फॉर्मेट ऐसा होगा:
pluto:$6$JvWfZ9u....:18283:0:99999:7:::
इस फ़ाइल में भी, हर प्रविष्टि में कोलन (:) द्वारा अलग किए गए कई फ़ील्ड हैं। आइए "pluto" उपयोगकर्ता के लिए प्रविष्टि को समझें।
pluto: उस उपयोगकर्ता का नाम जिसके लिए यह प्रविष्टि मेल खाती है।$6$JvWfZ9u.$yGFIqOJ....: उपयोग किए गए हैशिंग एल्गोरिदम के बारे में जानकारी के साथ हैश्ड उपयोगकर्ता पासवर्ड संग्रहीत। इसके अलावा, प्लेनटेक्स्ट पासवर्ड के साथ एक सॉल्ट मूल्य का उपयोग पासवर्ड हैश उत्पन्न करने के लिए किया जाता है।
{ plaintext password, salt } -> hashed password
इस फ़ील्ड में सामग्री को प्रोसेस करें। $ सिंबल का उपयोग तीन फ़ील्ड को अलग करने के लिए डिलीमीटर के रूप में किया जाता है।
$6 $JvWfZ9u. $yGFIqOJ....
$6: उपयोग किया गया हैशिंग एल्गोरिदम। संभावित हैशिंग एल्गोरिदम की सूची यहां है।- $1 : MD5
- $2a : Blowfish
- $2y : Eksblowfish
- $5 : SHA-256
- $6 : SHA-512
$JvWfZ9u.: सॉल्ट मूल्य।$yGFIqOJ....: हैश्ड पासवर्ड।
परिणामी हैश मूल्य को उपयोगकर्ता के लिए एन्क्रिप्टेड पासवर्ड के रूप में संग्रहीत किया जाता है। सॉल्ट मूल्य प्रत्येक उपयोगकर्ता के लिए अद्वितीय है। भले ही दो उपयोगकर्ताओं का समान प्लेनटेक्स्ट पासवर्ड हो, एक अद्वितीय सॉल्ट का उपयोग एक अद्वितीय हैश मूल्य उत्पन्न करेगा।
शेष फ़ील्ड के साथ जारी रखते हुए,
18283: 1 जनवरी, 1970 से उन दिनों की संख्या इंगित करता है जब पासवर्ड अंतिम बार बदला गया था0: यह फ़ील्ड उन दिनों की संख्या इंगित करने के लिए उपयोग किया जाता है जिसके बाद पासवर्ड बदला जा सकता है। 0 का मान मतलब है पासवर्ड किसी भी समय बदला जा सकता है।99999: यह फ़ील्ड उन दिनों की संख्या इंगित करता है जिसके बाद पासवर्ड बदला जाना चाहिए। 99999 का मान इंगित करता है कि उपयोगकर्ता जब तक चाहे पासवर्ड बनाए रख सकता है।7: यदि पासवर्ड समाप्त होने के लिए सेट है, तो यह फ़ील्ड पासवर्ड समाप्ति के बारे में उपयोगकर्ता को चेतावनी देने के लिए दिनों की संख्या इंगित करता है।: : :इस प्रविष्टि के हिस्से के रूप में तीन और फ़ील्ड हैं, हालांकि वे यहां खाली हैं। पहला पासवर्ड समाप्ति के बाद उन दिनों की संख्या इंगित करता है जिनके बाद खाता अक्षम हो जाएगा। दूसरा 1 जनवरी, 1970 से उन दिनों की संख्या इंगित करता है जब खाता अक्षम किया गया है। तीसरा फ़ील्ड भविष्य के उपयोग के लिए आरक्षित है। खाली फ़ील्ड इंगित करते हैं कि इस उपयोगकर्ता के लिए मौजूदा पासवर्ड समाप्त नहीं हुआ है और जल्द ही समाप्त होने के लिए सेट नहीं है।
पासवर्ड वैधता से संबंधित अंतिम सात फ़ील्ड सामूहिक रूप से "पासवर्ड एजिंग पॉलिसी" के बारे में जानकारी रखने के लिए कही जाती हैं।
"पासवर्ड एजिंग पॉलिसी" से संबंधित डिफ़ॉल्ट मूल्यों को "/etc/login.defs" फ़ाइल में निर्दिष्ट किया जाता है। इन मूल्यों को chage कमांड का उपयोग करके एक उपयोगकर्ता के लिए बदला जा सकता है।
ग्रुप जानकारी के बारे में क्या?
उपयोगकर्ता जानकारी और पासवर्ड "/etc/passwd" और "/etc/shadow" फ़ाइलों में संग्रहीत हैं। इसी तरह, ग्रुप जानकारी "/etc/group" फ़ाइल में संग्रहीत है।
उपरोक्त हाइलाइट "carbon" और "pluto" उपयोगकर्ताओं से संबंधित ग्रुप हैं। जब लिनक्स में कोई उपयोगकर्ता बनाया जाता है, तो उस उपयोगकर्ता को तुरंत उपयोगकर्ता नाम के समान नाम वाले ग्रुप को असाइन किया जाता है।
एक ग्रुप के सदस्य ग्रुप-संबंधित गतिविधियों के लिए एक ग्रुप पासवर्ड भी साझा कर सकते हैं। x का मान इंगित करता है कि उस ग्रुप के लिए पासवर्ड जानकारी "/etc/gshadow" फ़ाइल में होगी।
हालांकि, "/etc/gshadow" तक पहुंच "रूट" उपयोगकर्ता तक सीमित है।
"रूट" उपयोगकर्ता "/etc/gshadow" की प्रविष्टियों को देख सकता है, जो "/etc/shadow" के समान है। "carbon" ग्रुप के लिए प्रविष्टि को देखते हुए, हम देख सकते हैं कि दूसरे फ़ील्ड का मान ! है, जो इंगित करता है कि इस ग्रुप के लिए कोई पासवर्ड मौजूद नहीं है।
सब कुछ एक साथ रखना
जब कोई उपयोगकर्ता लॉग इन करना चाहता है, तो टाइप किए गए पासवर्ड का हैश "/etc/shadow" में उस उपयोगकर्ता के सॉल्ट मूल्य का उपयोग करके पाया जाता है। फिर इसकी तुलना संग्रहीत हैश से की जाती है। यदि मान मेल खाते हैं, तो उपयोगकर्ता को पहुंच प्रदान की जाती है।
संबंधित:
- लिनक्स में रूट पासवर्ड कैसे रीसेट करें
- लिनक्स में टर्मिनल से अपने उपयोगकर्ता पासवर्ड को कैसे प्रबंधित करें