मैं किसी खाते को पूरी तरह से कैसे निष्क्रिय कर सकता हूं?


48

मैं किसी खाते को पूरी तरह से कैसे निष्क्रिय कर सकता हूं? passwd -lपासवर्ड का उपयोग करके किसी को भी खाते में प्रवेश करने की अनुमति नहीं देगा, लेकिन आप निजी / सार्वजनिक कुंजी के माध्यम से लॉग इन कर सकते हैं। मैं खाते को पूरी तरह से कैसे निष्क्रिय करूंगा? एक उपसर्ग के रूप में मैंने फ़ाइल का नाम बदल दिया authorized_keys_lockme। क्या कोई और तरीका है?


3
क्या आप इसे फिर से सक्षम करने की योजना बना रहे हैं? सिस्टम लॉकडाउन? यदि नहीं, तो मैं बस खाता हटा दूंगा।
केन

जवाबों:


59

इसके अनुसार सही तरीका usermod(8)है:

usermod --lock --expiredate 1970-01-02 <username>

(दरअसल, --expiredateप्रारूप में वर्तमान तिथि से पहले कोई भी तर्क हो सकता है YYYY-MM-DD।)


स्पष्टीकरण:

  • --lockउपयोगकर्ता के पासवर्ड को लॉक करता है। हालाँकि, अन्य विधियों (जैसे सार्वजनिक कुंजी) द्वारा लॉगिन अभी भी संभव है।

  • --expiredate YYYY-MM-DDनिर्दिष्ट तिथि पर खाता अक्षम करता है। man shadow 51970-01-01 के अनुसार अस्पष्ट महत्व है और इसका उपयोग नहीं किया जाएगा।

मैंने अपनी मशीन पर इसका परीक्षण किया है। इस कमांड को निष्पादित करने के बाद न तो पासवर्ड के साथ लॉगिन करें और न ही सार्वजनिक कुंजी संभव है।


बाद में आपके द्वारा चलाए जा सकने वाले खाते को फिर से सक्षम करने के लिए:

usermod --unlock --expiredate '' <username>

7
1970-01-01 का उपयोग न करें क्योंकि यह सेट करेगा / आदि / छाया समाप्ति क्षेत्र 0. छाया (5) मान 0 का उपयोग नहीं किया जाना चाहिए क्योंकि इसकी व्याख्या या तो बिना किसी समाप्ति वाले खाते के रूप में की जाती है या समाप्ति के रूप में की जाती है। 1 जनवरी, 1970. कृपया उपयोग करें: usermod --lock --expiredate 1970-02-02 <username>
मार्कस मैक्सवेल

4
यह बहुत अच्छा होगा यदि आप इस ऑपरेशन को उलटने की विधि भी प्रदान कर सकते हैं। लगता है ऐसा ही usermod --unlock --expiredate '' usernameकरेंगे।
बॉब

3
@MarcusMaxwell ने क्या लिखा है: इस आदमी का पेज usermodकहता है:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3

1
--expiredate 1अपने आप पर पर्याप्त क्यों नहीं है?
थॉमस जेन्सेन

लेकिन sudo su usernameलगता है कि किसी अन्य खाते का उपयोग कर काम कर रहा है।
xhhdev

10

पासवर्ड लॉक करें और शेल को बदल दें /bin/nologin

sudo usermod --lock --shell /bin/nologin username

(या अधिक संक्षेप में sudo usermod -L -s /bin/nologin username।)


मैं 'शेल को / bin / nologin में कैसे बदलूं?'

5
@mattdm यह एक पूर्ण समाधान नहीं है, क्योंकि उपयोगकर्ता अभी भी निष्पादित होने के लिए एक कमांड निर्दिष्ट कर सकता है। उदाहरण के लिए ssh username@hostname /bin/bash, डिफ़ॉल्ट शेल की परवाह किए बिना उपयोगकर्ता को बैश प्रॉम्प्ट दिया जाएगा।
फुनेहे

4
@phunehehe - क्या आपने इसे आज़माया है? आपको लॉग में मिलेगा, "उपयोगकर्ता [उपयोगकर्ता नाम] की अनुमति नहीं है क्योंकि शेल / बिन / कोलोन मौजूद नहीं है"।
13

2
जहाँ तक मुझे पता है, अमान्य-शेल व्यवहार वास्तव में प्रलेखित नहीं है। दूसरी ओर, मैन पेज कहता है कि अगर पासवर्ड में अग्रणी है !! लिनक्स पर खाते को लॉक माना जाएगा, और यह वास्तव में काम नहीं करता है। तो, y'know, प्रलेखन और वास्तविकता वैसे भी केवल अनुमानित मैच हैं। :)
Mattdm

2
sudo chsh -s /bin/nologin/etc/passwdहाथ से संपादन से बेहतर होगा । इसके अलावा, कुछ प्रणालियों पर, यह /sbin/nologin
मिकेल

3

यहाँ एक और सरल तरीका है। आप उपयोगकर्ता खाते की समय सीमा समाप्त कर सकते हैं। यह खाते के लिए पासवर्ड-आधारित और ssh कुंजी-आधारित लॉगिन दोनों को रोक देगा, लेकिन पासवर्ड को स्पर्श नहीं करता है ।

खाता लॉक करने के लिए:

# chage -E 0 username

उपयोगकर्ता खाता 'उपयोगकर्ता नाम' सिस्टम पर लॉक हो जाएगा। उपयोगकर्ता खाते को फिर से सक्षम करने के लिए, निम्नलिखित करें।

खाता अनलॉक करने के लिए:

# chage -E -1 username

उपयोगकर्ता खाता 'उपयोगकर्ता नाम' पहले की तरह ही आपके सिस्टम पर फिर से सक्षम हो जाएगा । 'चेज' बाइनरी Red Hat Linux पर छाया-बर्तन पैकेज का हिस्सा है , या डेबियन लिनक्स पर पासवार्ड पैकेज।


3

मेरे पास Legate के उत्तर पर टिप्पणी करने के लिए पर्याप्त प्रतिनिधि नहीं है, लेकिन मैं यह साझा करना चाहता था कि इस उत्तर ने हमें एक अन्य उपयोग के मामले में मदद की:

1.) प्रश्न में खाता एक स्थानीय सेवा खाता है जो एक एप्लिकेशन चला रहा है, अंतिम उपयोगकर्ता खाता नहीं है।

2.) अंत उपयोगकर्ता स्वयं के रूप में ssh करते हैं, और sudo /bin/su <user>उपयोगकर्ता बनने के लिए और ऑडिट ट्रेल की आवश्यकता के कारण आवेदन को प्रशासित करते हैं कि सेवा खाते में सीधी लॉगिन क्षमता नहीं हो सकती है।

3.) सेवा खाते में एक वैध शेल ( /bin/bash, नहीं /sbin/nologin) होना चाहिए , क्योंकि एक एंटरप्राइज़ शेड्यूलिंग प्लेटफ़ॉर्म (एजेंट स्थानीय रूप से रूट के रूप में चलता है) होना चाहिए su - <user>और इसमें वह su -s /bin/bash <user>क्षमता नहीं है जो एक पूर्ण शेल करता है, और दूरस्थ रूप से कार्य चलाने के लिए आवश्यक है कई सर्वर और डेटाबेस को शामिल करने वाले बड़े बैच संचालन के लिए।


इसलिए ...

passwd -l <user>
बाधाओं को संतुष्ट नहीं करता क्योंकि सार्वजनिक कुंजी प्रमाणीकरण PAM को बायपास करता है और फिर भी प्रत्यक्ष लॉगिन की अनुमति देता है।

usermod -s /sbin/nologin <user>
उद्यम अनुसूचक के कारण बाधाओं को संतुष्ट नहीं करता है

usermod --lock --expiredate 1970-01-01 <user>
यह हमारा विजेता है। दूरस्थ लॉगिन अक्षम, फिर भी रूट अभी भी हो सकता है su <user>, जैसा कि अन्य उपयोगकर्ता sudoशेड्यूलर फ़ंक्शन के माध्यम से ठीक से कर सकते हैं और अधिकृत अंतिम उपयोगकर्ता आवश्यकतानुसार लक्ष्य सेवा खाता बन सकते हैं।

समाधान के लिए धन्यवाद!


1

पूरी तरह से इसे हटाने के लिए उपयोग करें userdel

कृपया ध्यान दें कि यदि आप किसी खाते को हटाते हैं, तो एक जोखिम है कि उसकी उपयोगकर्ता आईडी अभी भी कहीं न कहीं फ़ाइल सिस्टम में उपयोग की जाएगी और एक नया उपयोगकर्ता उन फ़ाइलों का स्वामित्व प्राप्त करेगा यदि यह उसी उपयोगकर्ता आईडी के अंतर्गत आता है।

आप किसी भी फ़ाइल के स्वामी को बदलना चाहते हैं जो हटाए गए उपयोगकर्ता के स्वामित्व में है।

यदि आप उपयोगकर्ता को बाद में जोड़ना चाहते हैं, तो इसकी पंक्तियों को /etc/passwd(और सोलारिस पर /etc/shadow) अस्थायी फ़ाइलों जैसे कि से सेव करें /etc/passwd_deleted

इस तरह से जब आप इसे वापस जोड़ते हैं तो आप उसी यूजर आईडी और उसी पासवर्ड का उपयोग कर सकते हैं (जो उपरोक्त फ़ाइलों में से एक में एन्क्रिप्ट किया गया है)

अस्वीकरण: मैंने अपने आप पर UNIX सीखा, इसलिए मुझे आश्चर्य नहीं होगा यदि उपयोगकर्ता को अस्थायी रूप से अक्षम करने का एक बेहतर तरीका है। वास्तव में मैं यह भी नहीं जानता कि आप जिस निजी / सार्वजनिक कुंजी की बात कर रहे हैं। इसके अलावा, मुझे यकीन है findकि एक कमांड है जिसका उपयोग उस मालिक के साथ फाइलों को देखने के लिए किया जा सकता है


1
Google अधिकृत_कीप्स या इस eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html को मूल रूप से पढ़ने की कोशिश करें, मूल रूप से पासवर्ड का उपयोग करने के बजाय, आप उस फ़ाइल में अपनी publuc कुंजी डालते हैं और जब आप ssh से जुड़ जाते हैं तो आप स्वतः लॉग इन हो जाएंगे। यदि सार्वजनिक में से कोई भी आपकी वर्तमान निजी कुंजी से मेल खाता है

0

किसी ने ssh_config के माध्यम से इसे करने की कोशिश की है? शायद इससे http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86 मदद कर सकता है

इसके अलावा, सुनिश्चित करें कि पासवर्डआयुथेंटिकेशन सार्वजनिक कुंजी का उपयोग करने के लिए सभी लॉगिन को बाध्य करने के लिए, साथ ही साथ नहीं सेट है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.