परिचय: लिनक्स में सुरक्षित यूज़र मैनेजमेंट की नींव
सर्वर एडमिनिस्ट्रेशन की दुनिया में सिस्टम सुरक्षा की शुरुआत सही यूज़र प्रोविज़निंग और प्रिविलेज सेपरेशन से होती है। जब भी किसी नए डेवलपर या सर्विस को सर्वर पर एक्सेस देना हो, तो बिना किसी मानवीय भूल के एक सुरक्षित और सुव्यवस्थित अकाउंट तैयार करना बेहद अहम होता है। इस गाइड में हम Ubuntu के उच्च-स्तरीय यूटिलिटी टूल adduser के वास्तविक कार्यप्रणाली (best practices) को चरणबद्ध तरीके से समझेंगे। इसके अलावा, लो-लेवल कमांड useradd की तुलना में इसके तकनीकी फायदों और होम डायरेक्टरी की अनुमतियों (permissions) से जुड़े आवश्यक सुरक्षा नियमों पर भी चर्चा करेंगे।
adduser का व्यावहारिक उपयोग: इंटरैक्टिव एवं ऑटोमेशन स्क्रिप्टिंग मोड
अभ्यास शुरू करने से पहले सिस्टम में यूज़र अकाउंट और क्रेडेंशियल प्रबंधन से संबंधित ज़रूरी टूल्स को रीफ़्रेश और इंस्टॉल कर लेते हैं।

adduser कमांड एक पर्ल-आधारित हाई-लेवल यूटिलिटी है जो नए अकाउंट के लिए होम डायरेक्टरी बनाने, कंफ़िगरेशन फ़ाइलें कॉपी करने और डिफ़ॉल्ट शेल असाइन करने जैसे कार्य अपने-आप निपटा देती है।
CI/CD पाइपलाइन या ऑटोमेशन स्क्रिप्ट्स में बार-बार इनपुट प्रॉम्प्ट से बचने के लिए हम --disabled-password और --gecos विकल्पों का उपयोग करके बिना किसी मानवीय हस्तक्षेप के तुरंत अकाउंट तैयार कर सकते हैं।
⚙️ [प्रमुख कमांड ऑप्शंस]
--home DIR : डिफ़ॉल्ट पाथ की जगह अपनी पसंद की डायरेक्टरी को यूज़र के होम डायरेक्टरी के रूप में निर्धारित करता है।--shell SHELL : सिस्टम के डिफ़ॉल्ट शेल को बदलकर निर्दिष्ट लॉगिन शेल सेट करता है।--gecos GECOS : यूज़र का पूरा नाम, रूम नंबर और फ़ोन नंबर जैसी जानकारियां बिना किसी प्रॉम्प्ट के एक ही बार में दर्ज करता है।--disabled-password : बिना पासवर्ड के अकाउंट जनरेट करता है; जब तक नया पासवर्ड सेट न किया जाए, तब तक डायरेक्ट पासवर्ड लॉगिन ब्लॉक रहता है।--disabled-login : पासवर्ड रहित अकाउंट बनाता है और साथ ही शेल लॉगिन को भी पूरी तरह अक्षम कर देता है।--ingroup GROUP : यूज़र के प्राइमरी ग्रुप के तौर पर सिस्टम में पहले से मौजूद किसी विशिष्ट ग्रुप को असाइन करता है।--system : आम यूज़र के बजाय बैकग्राउंड डीमन्स या सेवाओं के संचालन हेतु सिस्टम अकाउंट बनाता है।

chpasswd कमांड स्टैंडर्ड इनपुट (stdin) से username:password पेयर प्राप्त करके बैच मोड में पासवर्ड सेट करने की सुविधा देता है।
इस पद्धति से हम पहले बिना पासवर्ड के बनाए गए testuser अकाउंट को एक मजबूत पासवर्ड सुरक्षित रूप से प्रदान करते हैं।

सिस्टम में नया अकाउंट ठीक से रजिस्टर हुआ है या नहीं, यह परखने के लिए id कमांड का इस्तेमाल किया जाता है, जो यूज़र की UID, प्राइमरी GID और सभी संबंधित ग्रुप्स की लिस्ट दिखाता है।
टर्मिनल आउटपुट को देखकर यह स्पष्ट हो जाता है कि testuser को कौन-सी यूनीक आईडी और ग्रुप्स मिले हैं।

ls -la चलाकर नए यूज़र की होम डायरेक्टरी की पड़ताल करते हैं ताकि यह सुनिश्चित हो सके कि इनिशियलाइज़ेशन फ़ाइलें सही ढंग से प्लेस हुई हैं।
अकाउंट बनते समय /etc/skel टेम्पलेट डायरेक्टरी से .bashrc और .profile जैसी आवश्यक स्टार्टअप फ़ाइलें नए यूज़र के सही स्वामित्व (ownership) के साथ अपने-आप ट्रांसफर हो जाती हैं।

सेकेंडरी ग्रुप असाइनमेंट और sudo एडमिनिस्ट्रेटर प्रिविलेज प्रदान करना
मल्टी-यूज़र परिवेश में अधिकार बांटने के लिए सबसे पहले sudo groupadd -f devops चलाकर एक पूरक ग्रुप तैयार करते हैं।
यहाँ -f फ़्लैग यह सुनिश्चित करता है कि यदि ग्रुप पहले से मौजूद हो, तो कमांड बिना किसी एरर के सुरक्षित रूप से एग्जीक्यूट हो जाए।

Ubuntu में किसी यूज़र को सेकेंडरी ग्रुप में शामिल करने के लिए adduser कमांड के बाद केवल यूज़रनेम और ग्रुपनेम लिखना ही काफ़ी होता है।
जटिल तर्कों और फ़्लैग्स के बिना यह कमांड testuser को devops ग्रुप की सदस्यता सरलता से सौंप देता है।

सिस्टम एडमिनिस्ट्रेशन से जुड़े विशेषाधिकार देने के लिए हम testuser को सीधे sudo ग्रुप का हिस्सा बनाते हैं।
इस ग्रुप में शामिल होते ही यूज़र को एडमिनिस्ट्रेटिव कमांड्स चलाने की अनुमति प्राप्त हो जाती है।

परिवर्तनों की पुष्टि के लिए groups कमांड चलाकर testuser की वर्तमान ग्रुप सदस्यता की समीक्षा करते हैं।
कमांड के रिस्पॉन्स में प्राइमरी ग्रुप के साथ-साथ हाल ही में जोड़े गए sudo और devops ग्रुप्स साफ़ नज़र आने चाहिए।

sudo -l -U कमांड का उपयोग करके testuser पर लागू वास्तविक सुरक्षा नीतियों और अनुमतियों का ऑडिट किया जाता है।
परिणाम में (ALL : ALL) ALL दिखना इस बात का अंतिम प्रमाण है कि यूज़र को सम्पूर्ण एडमिनिस्ट्रेटिव कमांड्स निष्पादित करने का अधिकार सफलतापूर्वक मिल चुका है।

बैकग्राउंड सेवाओं और डेमन के लिए सिस्टम यूज़र (–system) कॉन्फ़िगर करना
sudo adduser --system --no-create-home --group appservice कमांड निष्पादित करके किसी भी बैकग्राउंड एप्लिकेशन या सर्विस के लिए एक डेडिकेटेड सिस्टम अकाउंट और उसका मैचिंग ग्रुप बनाया जा सकता है।--system स्विच यूज़र को 100 से 999 के बीच की लो-रेंज सिस्टम UID/GID सौंपता है, जबकि --no-create-home किसी भी व्यर्थ होम डायरेक्टरी को बनने से रोककर प्रोसेस आइसोलेशन और सर्वर सुरक्षा को मजबूत करता है।

सिस्टम के यूज़र डेटाबेस में इस नए खाते की सेटिंग्स जांचने के लिए getent passwd appservice चलाते हैं।
आउटपुट पुष्टि करता है कि होम डायरेक्टरी /nonexistent पर सेट है और लॉगिन शेल /usr/sbin/nologin पर लॉक है, जिससे कोई भी व्यक्ति इस अकाउंट से सीधे इंटरैक्टिव लॉगिन नहीं कर सकता।

ग्रुप डेटाबेस में नए रिकॉर्ड की जांच grep appservice /etc/group कमांड के ज़रिए की जाती है।--group फ़्लैग के कारण अकाउंट के नाम से ही मेल खाता हुआ सिस्टम ग्रुप (GID 103) सफलतापूर्वक पंजीकृत दिखाई देता है।

अंत में id appservice निष्पादित करके यूज़र आईडी और ग्रुप आईडी के एलोकेशन को सत्यापित करते हैं।
सामान्य यूज़र्स के 1000+ रेंज के बजाय, इस खाते को सिस्टम-विशिष्ट UID 102 और GID 103 आवंटित होना एक सुरक्षित कॉन्फ़िगरेशन को दर्शाता है।

useradd बनाम adduser: संरचनात्मक अंतर और अकाउंट हटाने (deluser) के सुरक्षा नियम
adduser अपनी डिफ़ॉल्ट सेटिंग्स /etc/adduser.conf फ़ाइल से पढ़ता है, जिसमें डायरेक्टरी परमिशन (DIR_MODE) और डिफ़ॉल्ट शेल (DSHELL) परिभाषित होते हैं।
कम-स्तरीय useradd के विपरीत, adduser इस कॉन्फ़िग फ़ाइल में तय सुरक्षित अनुमतियों (जैसे होम डायरेक्टरी के लिए सख्त 0750 या 0700 मोड और शेल के लिए /bin/bash) को स्वचालित रूप से लागू कर देता है, जिससे सुरक्षा चूक की गुंजाइश नहीं रहती।

जब किसी यूज़र की आवश्यकता समाप्त हो जाए, तब sudo deluser --remove-home testuser कमांड के ज़रिए अकाउंट के साथ-साथ उसकी होम डायरेक्टरी और मेल स्पूल को पूरी तरह साफ़ कर देना चाहिए।
यदि होम डायरेक्टरी को छोड़े बिना केवल अकाउंट हटाया जाए, तो पीछे बची फ़ाइलें अनाथ (orphan UID) बन जाती हैं, जो भविष्य में गंभीर सुरक्षा जोखिम पैदा कर सकती हैं। इसलिए --remove-home का इस्तेमाल सर्वोत्तम अभ्यास माना जाता है।

सेवाओं से जुड़े सिस्टम अकाउंट्स को हटाते समय sudo deluser --system appservice का प्रयोग करना चाहिए।--system फ़्लैग यह जांचता है कि टारगेट अकाउंट वास्तव में एक सिस्टम अकाउंट ही है, जिससे किसी वास्तविक मानवीय यूज़र के अनपेक्षित रूप से डिलीट होने का ख़तरा टल जाता है।

अभ्यास के दौरान बनाए गए अप्रयुक्त ग्रुप्स को सिस्टम से हटाने के लिए sudo groupdel devops 2>/dev/null || true चलाते हैं।
निष्क्रिय पड़े ग्रुप्स को साफ़ रखने से एक्सेस कंट्रोल सूचियां साफ़-सुथरी और प्रबंधनीय बनी रहती हैं।

अंत में id testuser || true चलाकर यह क्रॉस-चेक करते हैं कि यूज़र रिकॉर्ड सिस्टम डेटाबेस से पूर्णतः मिट चुका है या नहीं।
यदि कमांड अभी भी कोई विवरण लौटाता है, तो इसका अर्थ है कि विलोपन प्रक्रिया अधूरी रह गई है या बैकग्राउंड में कोई संबंधित प्रक्रिया अब भी एक्टिव है जिसकी जांच ज़रूरी है।

इस प्रकार हमने Ubuntu लिनक्स में adduser के व्यावहारिक उपयोग, ऑटोमेशन तकनीकों, सिस्टम सर्विस अकाउंट्स के अलगाव और सुरक्षित डी-प्रोविज़निंग के तौर-तरीकों को समझा।
इन बुनियादी सिद्धांतों और सुरक्षा युक्तियों को अपनाकर आप अपने प्रोडक्शन सर्वर वातावरण को कहीं अधिक मजबूत, व्यवस्थित और सुरक्षित बना सकते हैं।