खाते को अक्षम किए बिना उपयोगकर्ता का लॉगिन अक्षम करें


87

मान लें कि मैं adduserकमांड का उपयोग करके "फर्जी" नाम का उपयोगकर्ता बनाता हूं । मैं यह कैसे सुनिश्चित कर सकता हूं कि यह उपयोगकर्ता खाते को अक्षम किए बिना एक व्यवहार्य लॉगिन विकल्प नहीं होगा। संक्षेप में, मैं चाहता हूं कि खाता सुलभ हो su - bogus, लेकिन मैं नहीं चाहता कि यह नियमित लॉगिन प्रांप्ट के माध्यम से सुलभ हो।

चारों ओर खोज, ऐसा लगता है कि मुझे उस उपयोगकर्ता के पासवर्ड को अक्षम करने की आवश्यकता है, लेकिन ऐसा करने से passwd -d bogusमदद नहीं मिली। वास्तव में, इसने चीजों को बदतर बना दिया, क्योंकि मैं अब पासवर्ड टाइप किए बिना भी फर्जी लॉगिन कर सकता था।

क्या किसी दिए गए खाते के लिए नियमित लॉगिन को अक्षम करने का एक तरीका है?

नोट: बस स्पष्ट होने के लिए, मुझे पता है कि किसी उपयोगकर्ता को ग्राफ़िकल लॉगिन स्क्रीन के मेनू विकल्पों जैसे कि gdm से कैसे हटाया जाए, लेकिन ये विधियाँ वास्तव में लॉगिन को अक्षम किए बिना खाते को छिपा देती हैं। मैं नियमित रूप से लॉगिन को पूरी तरह से अक्षम करने का एक तरीका ढूंढ रहा हूं, जिसमें पाठ-मोड शामिल है।


2
-dपासवर्ड को हटाने के लिए आपका ध्वज है। यह इसे अक्षम करने से अलग है (लॉकिंग के रूप में संदर्भित, चाड का जवाब देखें)।
कालेब

1
आप शायद उन्हें पूरी तरह से अक्षम करना चाहते हैं: unix.stackexchange.com/questions/7690/… यह भी देखें Ubuntu सवाल पूछें: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
साइमन वुडसाइड

जवाबों:


102
passwd -l user

तुम क्या चाहते हो

जो यूजर अकाउंट को लॉक कर देगा। लेकिन आप अभी भी कर पाएंगे

su - user

लेकिन आपको su - userरूट करना होगा।

वैकल्पिक रूप से, आप !उपयोगकर्ता के पासवर्ड में /etc/shadow(यह सब passwd -lपर्दे के पीछे करता है) को प्रस्तुत करके एक ही बात को पूरा कर सकते हैं । और passwd -uइसे पूर्ववत करेंगे।


27
passwd -lविकल्प का उपयोग करके आपको पता होना चाहिए कि उपयोगकर्ता किसी अन्य प्रमाणीकरण टोकन (जैसे SSH कुंजी) का उपयोग करके लॉगिन कर सकता है।
pl1nk

2
कृपया इससे बचने के लिए एक अनुशंसित समाधान पर मेरा जवाब नीचे देखें ।
जार्ज गोत्स्चलिच

2
यह ubuntu 16.04 पर काम नहीं करता है। यह समाप्ति की तारीख बदल देगा और su - उपयोगकर्ता को अब अनुमति नहीं देगा।
मर्लिन

1
क्या यह --disabled-passwordविकल्प के समान है adduser? क्या बिना उपयोगकर्ता बनाए --disabled-passwordऔर फिर passwd -lउस उपयोगकर्ता पर चलना उसी परिणाम को प्राप्त करता है जैसे पहले स्थान पर चल रहा है? adduser--disabled-password
haridsv

39

आदमी पृष्ठ के passwd(1)बारे में कहते हैं passwd -l:

ध्यान दें कि यह खाता अक्षम नहीं करता है। उपयोगकर्ता अभी भी एक अन्य प्रमाणीकरण टोकन (जैसे SSH कुंजी) का उपयोग करके लॉगिन करने में सक्षम हो सकता है। खाते को निष्क्रिय करने के लिए, प्रशासकों को usermod --expiredate 1 का उपयोग करना चाहिए (यह खाते की समाप्ति की तारीख 2 जनवरी, 1970 निर्धारित करता है)।

इसलिए

usermod --expiredate 1 [LOGIN]

मुझे लगता है कि किसी खाते को निष्क्रिय करने का सही तरीका उपयोगकर्ता को अब और उपयोग करने में सक्षम नहीं होना चाहिए (जैसे कि उसने कंपनी छोड़ दी)।


4
मेरे सेंटो 6.3 पर, एक उपयोगकर्ता के लिए कनेक्शन passwd -lब्लॉक करता है ssh, और usermod --expiredate 1नहीं!
fduff

1
मेरे CentOS 7.4 पर, passwd -lअब sshउपयोगकर्ता के लिए कनेक्शन ब्लॉक नहीं usermod --expiredate 1 userकरता है , और ब्लॉक करता है। प्रति उपयोगकर्ता को ब्लॉक man passwdकरने के chage -E 0 userलिए भी उपयोग कर सकते हैं । लागू करने के बाद usermodया chageमैं कर रहा हूँsudo su user
user12345

usermod --expiredate 0 [LOGIN]यह भी काम करता है, यह है, जबकि जनवरी 2 1970 के लिए एक 1 सेट इस जनवरी 1 1970 तक की समय सीमा समाप्त तिथि सेट
SLM

"मान 0 का उपयोग नहीं किया जाना चाहिए क्योंकि इसकी व्याख्या या तो समाप्ति के साथ एक खाते के रूप में की जाती है, या 1 जनवरी, 1970 को समाप्ति के रूप में की जाती है।" - छाया (5)
जोहान्स

28

उपयोगकर्ता को लॉगिन करने से रोकने के लिए दो तरीके हैं:

  1. आप संपादन करके उपयोगकर्ता को लॉक कर सकते हैं /etc/passwd
  2. सीधे स्विच के passwdसाथ कमांड जारी करके-l

दूसरे मामले में उपयोगकर्ता एक अन्य प्रमाणीकरण टोकन (जैसे एसएसएच कुंजी) का उपयोग करके लॉगिन कर सकता है।

विधि # 1

  1. खोजें कि कहां है बोलोग्ना: / बिन / नोलिन या / बिन / सिनिन / नोलिन
  2. एक टर्मिनल खोलें और रूट के रूप में लॉगिन करें
  3. प्रकार vi /etc/passwd

अब आप passwdफाइल Insको संपादित करने के लिए फाइल प्रेस में हैं।

nologinविकल्प के साथ नीचे की रेखा बदलें ( /bin/bashमतलब उपयोगकर्ता लॉगिन करने में सक्षम है)।

root:x:0:0:root:/root:/bin/bash

इसके लिए। nologinमतलब उपयोगकर्ता लॉगिन करने में असमर्थ है।

root:x:0:0:root:/root:/bin/nologin

(या / बिन / sbin / nologin के साथ)

  1. Vi बंद करें Esc :wq

विधि # 2

उपयोगकर्ता को लॉक करने के लिए: passwd -l username

उपयोगकर्ता अनलॉक करने के लिए: passwd -u username


1
एक Ubuntu 14.04 सिस्टम पर, मुझे /usr/sbin/nologinइसके बजाय मिला /bin/nologin
डेनिस विलियमसन

7

इसका काफी आसान काम आपको बस /etc/passwdफाइल में कुछ बदलाव करना है ।

बस आपको शेल को बदलना होगा जो आम तौर पर डिफ़ॉल्ट रूप से होता है /bin/bashयानी आप इस शेल का उपयोग करके /bin/nologinया इसे बदल सकते हैं /bin/false। पुराना होने के /bin/nologinकारण इसे बदलना उचित है /bin/false


4

/bin/falseमें एक खोल के रूप में सेट करें/etc/passwd


18
जब कोई शेल सेट करता है /bin/false, तो वह उस उपयोगकर्ता के रूप में कार्य करने के लिए र का उपयोग करने से रोकता है। इसके अतिरिक्त, /bin/falseन तो कोई त्रुटि उत्पन्न करता है और न ही जो कुछ गलत हुआ, उसके अन्य संकेत - ऐसे मामलों में जहां कोई भी उस उपयोगकर्ता के रूप में शेल प्राप्त करने के लिए उपयोग करने से रोकने के लिए su को रोकना चाहता है, शेल को बदल दिया जाना चाहिए /sbin/nologinजिससे कोई त्रुटि उत्पन्न होती है।
हेजमैज

8
नहीं है, suअभी भी साथ उपयोगकर्ताओं के लिए संभव है /bin/falseमें गोले passwd- बस विकल्प का उपयोग --shell: su - --shell /bin/sh bogus
मतेज कोवैक

1
/usr/sbin/nologinके रूप में एक ही प्रभाव है /bin/false, लेकिन यह भी एक उपयोगी सूचनात्मक संदेश दिखाता है।
रोद

0

जब हम passwd -l userकमांड का उपयोग करके उपयोगकर्ता को लॉक करते !!हैं, तो /etc/shadowफ़ाइल में " " संकेत दिया जाता है । लेकिन हम अभी भी किसी उपयोगकर्ता शेल को रूट खाते से स्विच करने में सक्षम हो सकते हैं, लेकिन अन्य सामान्य उपयोगकर्ता लॉगिन शेल द्वारा उपयोगकर्ता खाते पर स्विच करने में सक्षम नहीं हैं।

हम खाते को फ़ाइल में प्रदान /bin/nologinया अक्षम कर सकते हैं । इसलिए उपयोगकर्ता लॉगिन नहीं कर सकता है।/bin/false/etc/passwd


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