मैं उपयोगकर्ता खातों को स्वतः समाप्त कैसे कर सकता हूं?


20

यह वही है जो मैं करना चाहता हूं:

उपयोगकर्ता का खाता बनने के बाद, उन्हें ssh-tunnel करने में सक्षम होना चाहिए , लेकिन जब तक कि जड़ उपयोगकर्ता द्वारा उलटी गिनती को रीसेट नहीं किया जाता है, उनका खाता 30 दिनों के बाद स्वचालित रूप से हटा दिया जाता है।

मैं इसे कैसे स्वचालित कर सकता हूं? मुझे लगभग 15 उपयोगकर्ताओं को संभालना होगा।

जवाबों:


29

useradd

आप यह नियंत्रित कर सकते हैं कि --expiredateविकल्प के उपयोग के माध्यम से उपयोगकर्ता का खाता कब तक वैध है useradd

useraddमैन पेज से अंश

-e, --expiredate EXPIRE_DATE
     The date on which the user account will be disabled. The date is
     specified in the format YYYY-MM-DD.

     If not specified, useradd will use the default expiry date specified
     by the EXPIRE variable in /etc/default/useradd, or an empty string 
     (no expiry) by default.

इसलिए उपयोगकर्ता के खाते की स्थापना करते समय आप भविष्य में अब से +30 दिन की तारीख निर्दिष्ट कर सकते हैं, और useraddउनके खातों को सेट करते समय अपने आदेश में जोड़ सकते हैं।

$ useradd -e 2013-07-30 someuser

chage

आप chageकमांड का उपयोग करके मौजूदा खातों की तारीख भी बदल सकते हैं । खाता समाप्ति तिथि बदलने के लिए आप निम्नलिखित कार्य करेंगे:

$ chage -E 2013-08-30 someuser

अब से +30 दिन की तारीख की गणना

ऐसा करने के लिए वास्तव में dateआदेश का उपयोग कर बहुत तुच्छ है । उदाहरण के लिए:

$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013

आप कमांड के +FORMATविकल्पों का उपयोग करके प्रारूपित कर सकते हैं date, जो आपको निम्नलिखित जानकारी देता है:

$ date -d "30 days" +"%Y-%m-%d"
2013-05-28

यह सब एक साथ डालें

तो उपरोक्त टुकड़ों को जानते हुए, इसे एक साथ रखने का एक तरीका है। खाता बनाते समय सबसे पहले आप यह कमांड चलाएंगे:

$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser

फिर जब आप अपनी समाप्ति तिथि समायोजित करना चाहते हैं तो आप समय-समय पर इस कमांड को चलाएंगे:

$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser

24h से कम की समयावधि निर्दिष्ट करना

यदि आप चाहते हैं कि कोई उपयोगकर्ता केवल कुछ मिनटों के लिए सक्रिय हो, तो आप उपरोक्त विकल्पों का उपयोग नहीं कर सकते क्योंकि उन्हें एक तिथि निर्दिष्ट करने की आवश्यकता होती है। उस स्थिति में, आप या तो crontabनिर्दिष्ट समय (उदाहरण के लिए, 10 मिनट) के बाद निर्मित उपयोगकर्ता को हटाने / लॉक करने के लिए सेट कर सकते हैं, या आप इनमें से एक कर सकते हैं:

adduser someuser && sleep 600 && usermod --lock someuser

या

$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes

संदर्भ


3
मैंने% M (महीने) को% m (महीने) में बदलने के लिए स्वतंत्रता प्राप्त की
एंथन

5

आप का उपयोग करना चाहिए आप Debian / Ubuntu पर हैं adduserऔर usermod। डेबियन आधारित सिस्टम useraddको निम्न स्तर का माना जाता है और (मैन पेज के अनुसार):administrators should usually use adduser(8) instead

adduser कोई समाप्ति विकल्प नहीं है, इसलिए आप इसका उपयोग खाता बनाने के लिए करते हैं।

usermodहै -e/ --expiredateसमाप्ति की तारीख तय करने का विकल्प।

आप के dateसाथ पैरामीटर की गणना करते date -d "30 days" "+%Y-%m-%d"हैं: पाने के लिए:

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username

1

एक अन्य तरीका (यदि आपका ओएस खाता समाप्ति का समर्थन नहीं करता है या यह सुविधा किसी भी कारण से काम नहीं करती है): अब से 30 दिनों तक चलने के लिए एक क्रॉन जॉब सेट करें जो इस खाते को लॉक कर देगा।

आमतौर पर खाता अपने एन्क्रिप्टेड पासवर्ड को अमान्य मान पर सेट करके लॉक किया जाता है; FreeBSD पर, pw lock Xआदेश खाते को लॉक कर देगा X


1
बताएं कि आप किसी खाते को कैसे लॉक कर सकते हैं।
स्लम

यह वास्तव में ओएस पर निर्भर है।
sendmoreinfo

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