यह प्रश्न मूल रूप से उल्लिखित है passwd --delete <username>
जो असुरक्षित है : इसके साथ, एन्क्रिप्टेड पासवर्ड फ़ील्ड /etc/shadow
पूरी तरह से खाली हो जाएगा।
username::...
यदि आपने sshd
पासवर्ड प्रमाणीकरण को अस्वीकार करने के लिए अपने कॉन्फ़िगर किया है , तो यह SSH के साथ सुरक्षित है ... लेकिन यदि आपके सिस्टम पर कोई अन्य सेवा पासवर्ड प्रमाणीकरण का उपयोग करती है और इसे शून्य पासवर्ड अस्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है, तो यह पासवर्ड के बिना उपयोग की अनुमति देता है! आप यह नहीं चाहते।
adduser --disabled-passwd
एक /etc/shadow
प्रविष्टि का उत्पादन करेगा जहां एन्क्रिप्टेड पासवर्ड फ़ील्ड सिर्फ एक तारांकन है, अर्थात
username:*:...
यह "एक एन्क्रिप्टेड पासवर्ड है जो कभी भी सफलतापूर्वक प्रवेश नहीं किया जा सकता है", इसका मतलब यह है कि खाता वैध है और तकनीकी रूप से लॉगिन की अनुमति देता है, लेकिन यह पासवर्ड द्वारा प्रमाणीकरण को सफल बनाने के लिए असंभव बनाता है । इसलिए यदि आपके पास अपने सर्वर पर कोई अन्य पासवर्ड-प्रमाणीकरण-आधारित सेवाएं हैं, तो यह उपयोगकर्ता उनसे अवरुद्ध है।
केवल प्रमाणीकरण विधियाँ जो मानक खाता पासवर्ड (जैसे SSH कुंजियाँ) के अलावा कुछ का उपयोग करती हैं, इस उपयोगकर्ता के लिए इस प्रणाली में सिस्टम पासवर्ड फ़ाइलों का उपयोग करने वाली किसी भी सेवा के लिए काम करेंगी। जब आपको एक उपयोगकर्ता की आवश्यकता होती है जो केवल SSH कुंजी के साथ लॉग इन कर सकता है, तो यही आप चाहते हैं।
यदि आपको इस राज्य में एक मौजूदा खाता सेट करने की आवश्यकता है, तो आप इस आदेश का उपयोग कर सकते हैं:
echo 'username:*' | chpasswd -e
एन्क्रिप्टेड पासवर्ड फ़ील्ड के लिए एक तीसरा विशेष मूल्य है: adduser --disabled-login
फिर फ़ील्ड में केवल एक विस्मयादिबोधक चिह्न होगा।
username:!:...
तारांकन की तरह, यह पासवर्ड प्रमाणीकरण को सफल करना असंभव बनाता है, लेकिन इसका एक अतिरिक्त अर्थ भी है: यह पासवर्ड को कुछ प्रशासन उपकरणों के लिए "लॉक" के रूप में चिह्नित करता है। passwd -l
मौजूदा पासवर्ड हैश को विस्मयादिबोधक चिह्न के साथ जोड़कर बहुत अधिक प्रभाव होता है, जो फिर से पासवर्ड प्रमाणीकरण का उपयोग करना असंभव बनाता है।
लेकिन यहाँ बेखबर के लिए एक जाल है: वर्ष 2008 में, passwd
पुराने shadow
पैकेज से आने वाले कमांड के संस्करण को passwd -l
"लॉकिंग अकाउंट" से केवल "पासवर्ड लॉक करना" में फिर से परिभाषित करने के लिए बदल दिया गया था । बताया गया कारण "अन्य पासवार्ड संस्करण के साथ संगतता के लिए" है।
यदि आपने (मेरे जैसा) बहुत पहले यह जान लिया, तो यह एक आश्चर्यजनक आश्चर्य के रूप में आ सकता है। यह उन मामलों में मदद नहीं करता है जो adduser(8)
स्पष्ट रूप से अभी तक इस भेद के बारे में नहीं जानते हैं।
प्रमाणीकरण के सभी तरीकों के लिए खाते को निष्क्रिय करने वाला हिस्सा वास्तव में खाते के लिए 1 की समाप्ति तिथि मान सेट कर रहा है usermod --expiredate 1 <username>
:। वर्ष 2008 से पहले, passwd -l
यह shadow
स्रोत किट से उत्पन्न होता है जो पासवर्ड को एक विस्मयादिबोधक चिह्न के साथ उपसर्ग करने के अलावा करता था - लेकिन अब ऐसा नहीं करता है।
डेबियन पैकेज चैंजोग कहते हैं:
- debian / पैच / 494_passwd_lock-no_account_lock: passwd -l के पिछले व्यवहार को पुनर्स्थापित करें (जो # 389183 में बदल गया): केवल उपयोगकर्ता के पासवर्ड को लॉक करें, उपयोगकर्ता के खाते को नहीं। मतभेदों को भी स्पष्ट रूप से प्रलेखित करें। यह पासवार्ड के पिछले संस्करणों और अन्य कार्यान्वयन के साथ एक व्यवहार को सामान्य बनाता है। बंद: # 492307
डेबियन बग 492307 और बग 389183 के लिए बग इतिहास इसके पीछे की सोच को समझने में मददगार हो सकता है।
sudo
एक्सेस के लिए अपने पासवर्ड की आवश्यकता नहीं है (या तो sudo अनुमति नहीं होने के कारण, या sudo अनुमति होने के साथNOPASSWD
), आपके द्वारा चयनित उत्तर उपयुक्त होना चाहिए। मैंने सूडो चिंता को शामिल करने के लिए उस उत्तर पर एक संपादन प्रस्तुत किया है, लेकिन मुझे लगा कि इस बीच मैं आपको यहां बुलाऊंगा।