मैं किसी उपयोगकर्ता को किसी समूह से कैसे निकालूं?


342

डेबियन में एक उपयोगकर्ता को हटाने के लिए मुझे किस कमांड का उपयोग करना चाहिए?

उपयोगकर्ता को समूह में शामिल करते समय, इसके साथ किया जा सकता है:

usermod -a -G group user

हालांकि, मुझे उपयोगकर्ता को समूह से निकालने के लिए एक समान कमांड (एक समूह और उपयोगकर्ता को तर्क के रूप में स्वीकार करना) नहीं मिला। निकटतम मैं प्राप्त कर सकता है:

usermod -G all,existing,groups,except,for,group user

क्या usermod OPTION group userविकल्प के साथ एक कमांड जैसा विकल्प है usermod(या एक समान कार्यक्रम) उपयोगकर्ता को समूह से हटा दें?


1
फेडोरा उपयोगकर्ताओं के लिए जो यहां समाप्त होते हैं, मैन usermod में -G विकल्प टिप्पणियों से पता चलता है कि सभी मौजूदा समूहों को सूचीबद्ध करने की इच्छा एक समूह को हटाने का तरीका है। फेडोरा के साथ नो-आर विकल्प; आपको लेकेनस्टेन के दृष्टिकोण का उपयोग करना चाहिए वह बचने की कोशिश कर रहा है।
स्टीफन

जवाबों:


403

आप उपयोग कर सकते हैं gpasswd:

# gpasswd -d user group

फिर नया समूह कॉन्‍फ़िगरेशन अगले लॉगिन पर दिया जाएगा, कम से कम डेबियन पर। यदि उपयोगकर्ता लॉग इन है, तो कमांड का प्रभाव तुरंत नहीं देखा जाता है।


9
बहुत बहुत धन्यवाद! gpasswd -a user groupउपयोगकर्ता को समूह में जोड़ने के लिए भी अच्छा लगता है, खासकर अगर एक टाइपो बनाया गया है और -aविकल्प गिरा हुआ है।
लेकेनस्टाइन

1
मेरे लिए काम नहीं करता है। मुझे दो संदेश मिलते हैं: क) उपयोगकर्ता को समूह से हटाना। b) gpasswd: उपयोगकर्ता समूह का सदस्य नहीं है। बाद में "सदस्यों के समूह" को चलाने से कोई परिवर्तन नहीं दिखता।
भू

1
@geoidesic आपको लॉग आउट करने और प्रभाव देखने के लिए फिर से लॉगिन करने की आवश्यकता है
वासिफ हुसैन

1
क्या फिर से लॉगिन किए बिना परिवर्तन को प्रभावी बनाने का एक तरीका है?
एंडी फ्यूज़निएक

2
@geoidesic मुझे Centos 7. पर ये त्रुटियां मिलीं। मैंने पाया कि आपको यह मिल गया है, यदि आप उपयोगकर्ता को उनके डिफ़ॉल्ट समूह से निकालने का प्रयास कर रहे थे। डिफ़ॉल्ट समूह को usermod -g user userफिर से हटाने का प्रयास करें और उन्हें हटाने का प्रयास करें।
पैनपाइप्स

175

डेबियन पर, adduserपैकेज में एक deluserप्रोग्राम होता है जो एक उपयोगकर्ता को एक समूह से निकालता है यदि आप दोनों को तर्क के रूप में पास करते हैं:

deluser user group

यदि आपका वितरण नहीं है adduser, तो आप संपादित /etc/groupऔर /etc/gshadowमैन्युअल रूप से कर सकते हैं ।

vigr
vigr -s

10
मैं जैसे कार्यक्रमों के बारे में पता नहीं था vigrऔर vipw। बहुत उपयोगी होने की स्थिति में
मैनपीज

3
वैकल्पिक रूप से, इसे संपादित करने के बजाय अपडेट को /etc/groupचलाने के grpconvलिए संशोधित करने के बाद /etc/gshadow
सिरिल

sudo deluser jenkins admin/ usr / sbin / deluser: आप उपयोगकर्ता को उनके प्राथमिक समूह से नहीं निकाल सकते।
जोनाथन

@JonathanLeaders प्रत्येक उपयोगकर्ता को कम से कम एक समूह में होना चाहिए। उपयोगकर्ता के प्राथमिक समूह का उपयोग करना usermodया vipwबदलना। यह प्रश्न पूरक समूहों के बारे में था।
गाइल्स

अच्छा लगा। adduser $user $groupइसके बजाय सरल कमांड भी है usermod -x -y -z -...
यज्ञ

65
usermod -G "" username

उपयोगकर्ता नाम से सभी माध्यमिक / पूरक समूहों को हटा देता है , केवल उनके प्राथमिक समूह के सदस्य के रूप में छोड़ देता है। इस Solaris 5.9 में काम किया


5
CentOS 6.4 में परीक्षण किया गया; काम करता है।
समुच्चय

1
Ubuntu 12.04 में भी काम करता है।
समुच्चय

और यह सभी गैर-सूचीबद्ध समूहों को छोड़कर, माध्यमिक समूहों को किसी भी समूह के समूह के लिए मजबूर करने का सबसे अच्छा तरीका है ।
ऋषि

परीक्षण और CentOS 7 में काम कर रहे हैं। धन्यवाद!
ट्रिकी

14

यह "पुराने स्कूल" दृष्टिकोण है ...

अधिकांश * निक्स सिस्टम समूह की जानकारी को एक सादे पाठ फ़ाइल में रखते हैं /etc/group, जहाँ

  • प्रत्येक पंक्ति में फ़ील्ड शामिल हैं

    • समूह का नाम
    • पारण शब्द
    • GID, और
    • उपयोगकर्ता सूची

    :चरित्र द्वारा सीमांकित ।

  • user_list फ़ील्ड उपयोगकर्ता नामों की एक सूची है, जो अल्पविराम से अलग होती है।

अब मान लीजिए कि आप नाम के thisuser एक समूह से उपयोगकर्ता को हटाना चाहते हैं thatgroup। बैक अप करके शुरू करें /etc/group, फिर फ़ाइल को संपादित करने और लाइन प्रविष्टि, जैसे, प्रविष्टि से संदर्भ को हटाने के लिए su विशेषाधिकार के साथ अपनी पसंद के संपादक का उपयोग करें।/etc/groupthisuserthatgroup

मूल पंक्ति कुछ इस प्रकार है:

thatgroup:x:1274:someuser,thisuser,anotheruser

संपादन के बाद इस तरह छोड़ दिया जाना चाहिए:

thatgroup:x:1274:someuser,anotheruser

अन्य सभी उत्तरों के साथ, यह उपयोगकर्ता के वर्तमान सत्र (ओं) को प्रभावित नहीं करेगा, यदि कोई हो (यानी, यदि उपयोगकर्ता वर्तमान में लॉग इन है)। अगली बार जब उपयोगकर्ता लॉग इन करेगा तो परिवर्तन प्रभावी होगा।


1
vigr/etc/groupमैन्युअल रूप से संपादन के लिए पहले ही उल्लेख किया गया था । मेरे मैनुअल पेज कहते हैं कि उपयोगकर्ता नाम कॉमा द्वारा अलग किए जाते हैं, कॉलन द्वारा नहीं। रिबूट करना आवश्यक नहीं है, आपको बस पुनः लॉगिन (या उपयोग newgrp) करने की आवश्यकता है।
लेकेनस्टाइन

किसी भी गैर-डेबियन उपयोगकर्ताओं को सुराग की तलाश में इन तटों को मारने में मदद करने के लिए ... यह ओपी के प्रश्न के दायरे के अनुसार डेबियन के लिए पर्याप्त हो सकता है, लेकिन यदि आप इसे * बीएसडी ओएस के लिए उपयोग कर रहे हैं, तो आपको प्लेटेक्स्ट फ़ाइल को संशोधित करना होगा जैसा कि उल्लेख किया गया है, तब वास्तव में उस सूची को उपयोग में लाने के लिए एक pwd_mkdb -p /etc/master.passwd जारी करें।
डैनो

3

आप SUSE वितरण (और, जाहिर है, कोई अन्य ) पर नीचे दिए गए आदेश का उपयोग कर सकते हैं ।

usermod आर समूह  user_name

groupवह समूह कहां है जिसे आप उपयोगकर्ता से हटाना चाहते हैं और user_nameवह उपयोगकर्ता जिसे आप समूह से निकालना चाहते हैं। उदाहरण के लिए,

usermod -R root imnottheroot

1
क्या पैकेज आपके usermod बाइनरी प्रदान करता है? मैं संस्करण का पता लगाने के लिए कह रहा हूं, जैसा कि छाया-बर्तन-4.1.4.3 से मेरा -R विकल्प प्रदान नहीं करता है।
मायरोस्लाव

3
मेरी छाया 4.1.5.1-5 पैकेज (आर्क लिनक्स) में एक -Rविकल्प है, लेकिन इसका मतलब कुछ और है। यह लिनक्स नहीं है मुझे लगता है।
लेकेनस्टाइन

3
मुझे यकीन नहीं है कि यह काम करेगा। मैनपेज कह रही है कि -Rयह है: "आर, --root CHROOT_DIR CHROOT_DIR निर्देशिका में परिवर्तन लागू करें और CHROOT_DIR निर्देशिका से विन्यास फाइल का उपयोग करें।"
MikeKusold

2
संबंधित चीजों का एकमात्र प्रकार मुझे मिल सकता है यह ऑरेकल मैनपेज था, लेकिन यह अभी भी उसी चीज के बारे में नहीं है, इसलिए इस उत्तर को हटा दिया जाना चाहिए।
22

sudo usermod -R admin jenkinsusermod: अमान्य चुरोट पथ 'व्यवस्थापक'
जोनाथन

1

विचार करें:

  • उपयोगकर्ता नाम: abc2
  • समूह का नाम: newgroup11

  • कार्य: उपयोगकर्ता abc2को समूह से निकालनाnewgroup11

[root@home1 ~]# groups abc2
abc2 : abc2
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# groups abc2
abc2 : abc2 newgroup11
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# usermod -G abc2 abc2
[root@home1 ~]# groups abc2
abc2 : abc2

** गलत होने पर मुझे सही करें। **


1
यह "काम करता है", लेकिन केवल इसलिए कि आपके पास एक एकल माध्यमिक समूह है। usermod -G newgroup11 abc2आपको द्वितीयक समूह में डाल देगा newgroup11। चूंकि प्राथमिक समूह है abc2, आप दोनों समूहों में समाप्त हो जाएंगे। द्वितीयक समूहों से निकाले जाने के usermod -g abc2 abc2परिणाम क्योंकि इसका अभी उल्लेख नहीं किया गया है। तो तीन या अधिक विभिन्न समूहों के लिए, यह विधि काम नहीं करेगी। बेहतर कमांड के लिए शामिल अन्य उत्तरों को देखें । newgroup11gpasswd
लेकेनस्टेन

1

आप usermod कमांड whithout -a विकल्प को निष्पादित करके समूह से उपयोगकर्ता को हटा सकते हैं। उदाहरण, "usermod -G group1 उपयोगकर्ता नाम" को निष्पादित करके समूह 1 में उपयोगकर्ता को जोड़ देगा, और इसे किसी अन्य समूह से हटा देगा जहां यह है। याद रखें, आप समूह के नामों को सूचीबद्ध करके उपयोगकर्ता को विभिन्न समूहों में रख सकते हैं, अल्पविराम से अलग।


1
यह जानकारी कई बार पहले ही प्रस्तुत की जा चुकी है।
स्कॉट

0

एक डिस्ट्रो (जैसे फेडोरा) में वर्मोड का उपयोग जारी रखने के लिए जिसके पास एक हटाने का विकल्प नहीं है, जहां उपयोगकर्ता = बॉब और समूह = डिलीटिथिसग्रुप, कमांड होगा:

usermod -G `cat /etc/group |  grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob

पाइप (1) सभी समूह प्रविष्टियों को प्राप्त करता है जो उपयोगकर्ता के अंतर्गत आता है, (2) जिसको निकालने की आवश्यकता होती है उसे निकालते हैं, (3) पहला कॉलम (समूह नाम) लौटाता है, नई लाइन को अल्पविराम से बदल देता है और ट्रेलिंग कॉमा को हटा देता है।

बेशक, आप उस सभी को एक bash स्क्रिप्ट में डाल सकते हैं, जो उपयोगकर्ता और समूह को पैरामीटर के रूप में डिलीट करने के लिए लेता है। awk का उपयोग अंत को छोटा करने के लिए किया जा सकता है लेकिन मैं grep, cut, tr और sed से चिपकना चाहता था।


इस के अनुसार आदमी पेज , gpasswd -d bob deletethisgroupभी उपलब्ध है। किसी भी कारण से आप इसका उपयोग नहीं कर रहे हैं?
लेकेनस्टाइन

हर कोई ग्रुप पासवर्ड सेट नहीं करना चाहता। मैं केवल कमांड का उपयोग करके एक समाधान प्रस्तुत कर रहा था जिसे एक विशेष डिस्ट्रो पर प्रश्न द्वारा संदर्भित किया गया था। फेडोरा / RHEL / Centos में gpasswd -d के साथ हटाए गए उपयोगकर्ता अभी भी समूह में शामिल हो सकते हैं यदि उसके पास पासवर्ड तक पहुंच है। यह वास्तव में इसे अस्वीकार करने के विपरीत समूह पहुंच को बढ़ाता है।
स्टीफन

मैं समझ गया कि उपयोगिता का नाम gpasswdइसलिए है क्योंकि यह निकटता से संबंधित है /etc/passwd, लेकिन इसके बजाय समूहों का प्रबंधन करती है। सादे passwdकमांड के विपरीत जो सिर्फ पासवर्ड को नियंत्रित करता है, gpasswdइसका उपयोग किसी समूह की सदस्यता को प्रबंधित करने के लिए भी किया जा सकता है। यदि आप रूट या ग्रुप एडमिन हैं तो ग्रुप पासवर्ड की आवश्यकता नहीं है।
लीकेनस्टाइन

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

समान रूप से संबंधित समान नामकरण और उद्देश्यों के संबंध में, मैंने इसका मतलब यह नहीं बताया कि / etc / passwd फ़ाइल वास्तव में gpasswd द्वारा प्रबंधित है। ध्यान दें कि मेरी पहली टिप्पणी में "मैन पेज" फेडोरा 13. के लिए गॉजव्ड मैनुअल पेज पर इंगित करता है। gpasswd $groupआप समूह पासवर्ड सेट कर सकते हैं जो आपके द्वारा बताई गई सुरक्षा समस्या का कारण बनता है। हालाँकि, आपके पास पहले टिप्पणी और स्वीकृत उत्तर में वर्णित उपयोगकर्ता को हटाने के लिए पासवर्ड और उपयोग नहीं हो gpasswd -d $user $groupसकता है। ध्यान दें कि यह कमांड समूह पासवर्ड के लिए संकेत नहीं देता है और न ही इसे संशोधित या इसकी आवश्यकता है।
लीकेनस्टाइन

0

मान लीजिए कि उपयोगकर्ता नाम = छात्र और समूहनाम = अनुसंधान , इसलिए studentउपयोगकर्ता को उस researchसमूह से निकालने के लिए जिसे निम्न करने की आवश्यकता है:

gpasswd -d student research

क्यों कुछ दोहराने के लिए, कि यहाँ 6 साल पहले था? यह स्वीकृत उत्तर के रूप में चिह्नित है!
बेटलिस्टा

-1
pw groupmod "groupname|gid" -d "username|uid"

एक समाधान यदि आप सीएसएच का उपयोग कर रहे हैं, तो जो भी कारण हो।


-1

एक उपयोगकर्ता को किसी समूह के समूह से निकालने के लिए इस IMO की सबसे अच्छी उपयोगिता है।

कमांड उदाहरण:

sudo gpasswd -d group user

* सहायता जानकारी *

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

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