सभी उपयोगकर्ताओं को सूचीबद्ध करने के लिए एक कमांड? और उपयोगकर्ताओं को कैसे जोड़ें, हटाएं, संशोधित करें?


855

मुझे टर्मिनल में सभी उपयोगकर्ताओं को सूचीबद्ध करने के लिए एक कमांड की आवश्यकता है। और टर्मिनल से उपयोगकर्ताओं को कैसे जोड़ना, हटाना, संशोधित करना है।

यह आपके खातों को टर्मिनल द्वारा आसानी से प्रशासित करने में मदद कर सकता है।


3
sed जवाबsed 's/:.*//' /etc/passwd
अविनाश राज

2
सूची उपयोगकर्ताओं:awk -F: '{ print $1 }' /etc/passwd
saviour123

जवाबों:


1142

सूची बनाने के लिए

उन सभी स्थानीय उपयोगकर्ताओं को सूचीबद्ध करने के लिए जिनका आप उपयोग कर सकते हैं:

cut -d: -f1 /etc/passwd

गैर-स्थानीय सहित सभी उपयोगकर्ताओं को प्रमाणित करने में सक्षम (किसी तरह) सूचीबद्ध करने के लिए, यह उत्तर देखें ।

कुछ और उपयोगी उपयोगकर्ता-प्रबंधन आदेश ( स्थानीय उपयोगकर्ताओं तक सीमित ):

जोड़ने के लिए

एक नया उपयोगकर्ता जोड़ने के लिए जिसका आप उपयोग कर सकते हैं:

sudo adduser new_username

या:

sudo useradd new_username

इसे भी देखें: Adduser और useradd में क्या अंतर है?

हटाने / हटाने के लिए

किसी उपयोगकर्ता को हटाने / हटाने के लिए, पहले आप इसका उपयोग कर सकते हैं:

sudo userdel username

फिर आप हटाए गए उपयोगकर्ता खाते के लिए होम डायरेक्टरी को हटाना चाहते हैं:

sudo rm -r / home / उपयोगकर्ता नाम

कृपया सावधानी के साथ उपरोक्त आदेश का उपयोग करें!

संशोधित करना

उपयोगकर्ता का उपयोगकर्ता नाम संशोधित करने के लिए:

usermod -l new_username old_username

उपयोगकर्ता के लिए पासवर्ड बदलने के लिए:

sudo passwd username

उपयोगकर्ता के लिए शेल बदलने के लिए:

sudo chsh username

उपयोगकर्ता के लिए विवरण बदलने के लिए (उदाहरण के लिए वास्तविक नाम):

sudo chfn username

उपयोगकर्ता को sudoसमूह में जोड़ने के लिए :

adduser username sudo

या

usermod -aG sudo username

: और, बेशक, यह भी देखें man adduser, man useradd, man userdel... और इतने पर।


12
राडू यह उल्लेख करना भूल गया कि sudo chfn <username>उपयोगकर्ता विवरण (उदाहरण के लिए वास्तविक नाम) कौन बदलता है। मैंने इसे एक टिप्पणी के रूप में जोड़ने की कोशिश की, लेकिन मुझे यह बताने में त्रुटि हुई कि मेरे पास ऐसा करने के लिए +50 प्रतिष्ठा होनी चाहिए।
मिकेला

2
मुझे लगता है कि यह रेखांकित किया जाना चाहिए कि कि जुड़ा हुआ सवाल का सही जवाब है askubuntu.com/a/381646/16395 --- अन्यथा आप हाथ से GID / यूआईडी उबंटू नीतियों को ध्यान में रखना है। स्वीकृत उत्तर इतना स्पष्ट नहीं है।
रमनो

sudo userdel DOMAIN \\ johndoe मुझे त्रुटि देता है: "userdel: / 'etc / passwd' से 'DOMAIN \ johndoe' प्रविष्टि को नहीं हटा सकता है - मैंने / etc / passwd में देखा और वे वहाँ भी नहीं हैं, संभावना है क्योंकि यह" है डोमेन "खाता?
00fruX

1
@ 00fruX हाँ ... यदि आप एक केंद्रीकृत उपयोगकर्ता डेटाबेस का उपयोग कर रहे हैं तो आपको सीधे इससे निपटने की आवश्यकता होगी।
ओली


87

बस प्रेस Ctrl+ Alt+ Tअपने कीबोर्ड पर टर्मिनल खोलने के लिए। जब यह खुलता है, तो नीचे कमांड चलाएँ:

cat /etc/passwd

या

less /etc/passwd
more /etc/passwd

आप awk: awk का भी उपयोग कर सकते हैं

awk -F':' '{ print $1}' /etc/passwd

कमांड द्वारा उपयोगकर्ताओं को कैसे जोड़ा जाए?
नक्स

आप useradd कमांड का उपयोग कर सकते हैं ।
मिच

@nux पार्टी के लिए थोड़ा देर से, लेकिन adduserइसके बजाय कमांड लाइन के उपयोग से , useraddउन लिपियों तक सीमित होना चाहिए जहां लेखक वास्तव में जानता है कि वह क्या कर रहा है।
फ्लिंडबर्ग

64

इस तरह की जानकारी प्राप्त करने का सबसे आसान तरीका है getent- कमांड के लिए मैनपेजgetentमैनपेज आइकन देखें । जबकि वह कमांड एक ही आउटपुट देता cat /etc/passwdहै क्योंकि यह याद रखना उपयोगी है क्योंकि यह आपको ओएस में कई तत्वों की सूची देगा।

आपके द्वारा टाइप किए गए सभी उपयोगकर्ताओं की सूची प्राप्त करने के लिए (जैसा कि उपयोगकर्ताओं को सूचीबद्ध किया गया है /etc/passwd)

getent passwd

सिस्टम में एक उपयोगकर्ता नवागंतुक जोड़ने के लिए आप टाइप करेंगे

sudo adduser newuser

एक उपयोगकर्ता बनाने के लिए जिसमें सभी डिफ़ॉल्ट सेटिंग्स लागू हैं।

बोनस: (उदाहरण के लिए किसी भी उपयोगकर्ता को जोड़ने के लिए anyuser (उदाहरण के लिए एक समूह के लिए) सीडीरॉम ) टाइप

sudo adduser anyuser cdrom

आप किसी उपयोगकर्ता (उदाहरण के लिए अप्रचलित ) को हटा देते हैं

sudo deluser obsolete

यदि आप उसकी होम डाइरेक्टरी / मेल को हटाना चाहते हैं तो आप टाइप करें

sudo deluser --remove-home obsolete

तथा

sudo deluser --remove-all-files obsolete

पूरे सिस्टम पर इस उपयोगकर्ता के स्वामित्व वाली उपयोगकर्ता और सभी फ़ाइलों को हटा देगा ।


8
यह याद रखना उपयोगी है कि getent सिर्फ / etc / passwd में उपयोगकर्ताओं के आउटपुट को प्रिंट नहीं करता है, लेकिन सभी कॉन्फ़िगर किए गए userdb बैकएड में सभी उपयोगकर्ता, चाहे वह / etc / passwd या LDAP, आदि हो
Marcin Kaminski

@MarcinK विटामिनki सही है, यह उन एसएसओ सिस्टम में भी उपयोगकर्ताओं को सेटअप करता है जिनकी सर्वर तक पहुंच होती है। यह उत्तर getent passwdसही कमांड होने के साथ सबसे अच्छा एक है
उलकास

सब से @MarcinKaminski गणनीय userdb बैकेंड
jrw32982


27

यह सामान्य परिस्थितियों में , सभी सामान्य (गैर-प्रणाली, अजीब नहीं, आदि) उपयोगकर्ताओं को प्राप्त करना चाहिए :

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

यह काम करता है:

  • से पढ़ रहा है /etc/passwd
  • :एक सीमांकक के रूप में उपयोग करना
  • यदि तीसरा फ़ील्ड (उपयोगकर्ता आईडी संख्या) 1000 से बड़ा है और 65534 नहीं है, तो पहला फ़ील्ड (उपयोगकर्ता का उपयोगकर्ता नाम) मुद्रित होता है।

ऐसा इसलिए है क्योंकि कई लिनक्स सिस्टम पर, 1000 से ऊपर के उपयोगकर्ता बिना नाम वाले (आप सामान्य कह सकते हैं) उपयोगकर्ताओं के लिए आरक्षित हैं। इस पर कुछ जानकारी यहाँ :

एक यूजर आईडी (यूआईडी) एक यूनिक पॉजिटिव पूर्णांक है जो प्रत्येक उपयोगकर्ता को यूनिक्स-जैसे ऑपरेटिंग सिस्टम द्वारा सौंपा गया है। प्रत्येक उपयोगकर्ता को उसके यूआईडी द्वारा सिस्टम की पहचान की जाती है, और उपयोगकर्ता नाम आमतौर पर केवल मनुष्यों के लिए एक इंटरफेस के रूप में उपयोग किया जाता है।

UID को उनके संबंधित उपयोगकर्ता नाम और अन्य उपयोगकर्ता-विशिष्ट जानकारी के साथ / etc / passwd फ़ाइल में संग्रहीत किया जाता है ...

तीसरे फ़ील्ड में UID होता है, और चौथे फ़ील्ड में समूह ID (GID) होता है, जो डिफ़ॉल्ट रूप से सभी सामान्य उपयोगकर्ताओं के लिए UID के बराबर होता है।

लिनक्स कर्नेल 2.4 और इसके बाद के संस्करण में, यूआईडी 32-बिट पूर्णांक हैं जो शून्य से 4,294,967,296 तक मूल्यों का प्रतिनिधित्व कर सकते हैं। हालांकि, केवल 65,534 तक के मूल्यों का उपयोग करने की सलाह दी जाती है ताकि पुराने कर्नेल या फाइलसिस्टम का उपयोग करने वाले सिस्टम के साथ संगतता बनाए रखी जा सके जो केवल 16-बिट यूआईडी को समायोजित कर सकते हैं।

यूआईडी की 0 में एक विशेष भूमिका है: यह हमेशा रूट खाता है (यानी, सर्वशक्तिमान प्रशासनिक उपयोगकर्ता)। यद्यपि इस खाते पर उपयोगकर्ता नाम बदला जा सकता है और अतिरिक्त खातों को उसी यूआईडी के साथ बनाया जा सकता है, न ही सुरक्षा के दृष्टिकोण से कार्रवाई बुद्धिमान है।

यूआईडी 65534 आमतौर पर किसी के लिए आरक्षित है, एक उपयोगकर्ता जो बिना सिस्टम विशेषाधिकार के है, एक साधारण (यानी, गैर-विशेषाधिकार प्राप्त) उपयोगकर्ता के विपरीत। इस यूआईडी का उपयोग अक्सर एफ़टीपी (फ़ाइल ट्रांसफर प्रोटोकॉल) या एचटीटीपी (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल) के माध्यम से दूरस्थ रूप से सिस्टम तक पहुँचने वाले व्यक्तियों के लिए किया जाता है।

यूआईडी 1 99 के माध्यम से पारंपरिक रूप से विशेष प्रणाली उपयोगकर्ताओं (कभी-कभी छद्म उपयोगकर्ता कहलाता है) के लिए आरक्षित होता है, जैसे कि पहिया, डेमॉन, एलपी, ऑपरेटर, समाचार, मेल, आदि। ये उपयोगकर्ता प्रशासक हैं जिन्हें कुल जड़ शक्तियों की आवश्यकता नहीं है, लेकिन जो प्रदर्शन करते हैं कुछ प्रशासनिक कार्यों और इस प्रकार आम उपयोगकर्ताओं के लिए अधिक विशेषाधिकार की आवश्यकता है।

कुछ लिनक्स वितरण (यानी, संस्करण) गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं के लिए 100 पर यूआईडी शुरू करते हैं। अन्य, जैसे रेड हैट, उन्हें 500 से शुरू करते हैं, और अभी भी अन्य, ऐसे डेबियन, उन्हें 1000 से शुरू करते हैं। वितरण के बीच अंतर के कारण, मैनुअल यदि किसी संगठन में नेटवर्क में एकाधिक वितरण का उपयोग किया जाता है तो हस्तक्षेप आवश्यक हो सकता है।

इसके अलावा, स्थानीय उपयोगकर्ताओं के लिए यूआईडी का एक ब्लॉक आरक्षित करना सुविधाजनक हो सकता है, जैसे कि 9999 के माध्यम से 1000, और दूरस्थ उपयोगकर्ताओं के लिए एक और ब्लॉक (जैसे, नेटवर्क पर कहीं और उपयोगकर्ता), जैसे कि 10000 से 65534 तक। महत्वपूर्ण बात यह तय करना है एक योजना पर और इसका पालन करें।

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

आम धारणा के विपरीत, यह आवश्यक नहीं है कि यूआईडी क्षेत्र में प्रत्येक प्रविष्टि अद्वितीय हो। हालांकि, गैर-अद्वितीय यूआईडी सुरक्षा समस्याओं का कारण बन सकते हैं, और इस प्रकार पूरे संगठन में यूआईडी को अद्वितीय रखा जाना चाहिए। इसी तरह, पूर्व उपयोगकर्ताओं से यूआईडी के पुनर्चक्रण को यथासंभव लंबे समय तक बचा जाना चाहिए।


1
लगभग एक सटीक उत्तर है, लेकिन IMO इसे getentसीधे पढ़ने /etc/passwdऔर देखने के बजाय UID_MIN/ UID_MAXहार्ड-कोडिंग मूल्यों के बजाय उपयोग करने के लिए क्लीनर है :getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
मैक्स Truxa

17

उन सभी उपयोगकर्ताओं की सूची , जो लॉगिन कर सकते हैं (कोई सिस्टम उपयोगकर्ता जैसे: बिन, बहमन, मेल, sys, आदि)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

नया उपयोगकर्ता जोड़ें

sudo adduser new_username

या

sudo useradd new_username

उपयोगकर्ता नाम हटाएं / हटाएं

sudo userdel username

यदि आप होम डायरेक्टरी को हटाना चाहते हैं (डायरेक्टरी / होम / यूजरनेम को डिफॉल्ट करें)

sudo deluser --remove-home username

या

sudo rm -r /path/to/user_home_dir

यदि आप इस उपयोगकर्ता से सिस्टम से सभी फ़ाइलों को हटाना चाहते हैं (न केवल घर diretory है)

sudo deluser --remove-all-files

1
हो सकता है कि आपको adduserऔर के बीच का अंतर स्पष्ट करना चाहिए useraddsudoपहले कमांड में -prefix भी जोड़ें । पासवर्ड शैडो फाइल को केवल रूट के रूप में पढ़ा जा सकता है।
s3lph

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowमुझे बिन, डेमॉन इत्यादि सहित सभी उपयोगकर्ता दिखाए और इस चेतावनी को फेंक दिया: एस्केप सीक्वेंस \$' treated as plain $ 'मुझे यह पोस्ट stackoverflow.com/a/25867768/847954 मिला और एक और बैकस्लैश जोड़ा और इसने ठीक काम किया:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jffff musk

8

ठीक है यहाँ एक तरकीब है जो आपको इसे हल करने में मदद करेगी। यदि आप उपयोगकर्ता टाइप करते हैं और दो बार टैब कुंजी मारते हैं, तो टर्मिनल का ऑटो पूरा हो जाता है, यह पहले 4 वर्णों के रूप में उपयोगकर्ता के साथ मौजूद सभी आदेशों को सूचीबद्ध करेगा।

user (tab tab)

मुझे संभव विकल्प useradd userdel usermod उन उपयोगकर्ताओं-व्यवस्थापक के रूप में देता है
अगर आप एक आदेश के बारे में अधिक पता है कि यह या टाइप आदमी आदमी useradd useradd देता है गूगल करना चाहते हैं - एक नया उपयोगकर्ता या अद्यतन डिफ़ॉल्ट नई उपयोगकर्ता जानकारी बनाने ... ...

उपयोगकर्ताओं को सूचीबद्ध करने के लिए आपको मिच ने जो कहा है, उसके साथ जाना चाहिए।

आशा है कि मैं बैश में टैब को पूरा करने में मदद करता हूं मुझे चीजों को याद करने से बचाता है।


6

उन उपयोगकर्ताओं का पता लगाने के लिए जिनके पास मशीन पर / होम-फोल्डर में होम-डायरेक्टरीज़ हैं, निम्नलिखित कमांड चलाएँ

cd /home
ls 

फिर आप उन उपयोगकर्ताओं को देख सकते हैं जिनके पास सर्वर में लॉग इन करने के लिए प्राधिकरण है। अगर हम किसी भी उपयोगकर्ता की फ़ाइलों को देखना चाहते हैं, तो आपको मूल उपयोगकर्ता होना चाहिए।


8
यह केवल सामग्री दिखाता है /home। जबकि उबंटू डिफ़ॉल्ट रूप से उपयोगकर्ता निर्देशिकाओं को वहां रखता है, यह किसी भी तरह से अनिवार्य नहीं है।
डेविड फ़ॉस्टर

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