सभी उपयोगकर्ताओं और उनके समूहों / इसके विपरीत को दिखाएं


70

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

तो कुछ ऐसा showusersहोगा जो सभी उपयोगकर्ताओं को सूचीबद्ध करेगा, और इसमें मौजूद showgroups -u thisuserसभी समूहों को दिखाएगा thisuser


ऐसा कोई आदेश नहीं है। आपको इसे अपने आप से लिपिबद्ध करने की आवश्यकता है।
क्रिस

कैसे के बारे मेंcat /etc/passwd
सुदीप भंडारी

जवाबों:


93

सभी उपयोगकर्ताओं:

$ getent passwd

सभी समूह:

$ getent group

विशिष्ट उपयोगकर्ता वाले सभी समूह:

$ getent group | grep username

मैंने पाया कि एक उपयोगकर्ता है जिसका नाम speech-dispatcherसमूह ऑडियो (आधारित groups speech-dispatcher) है। लेकिन यह getent groupकमांड के तहत सूचीबद्ध नहीं है ! समस्या क्या है?
PHP शिक्षार्थी

3
@PHPLearner यदि आपके पास कोई अन्य प्रश्न है, तो कृपया एक प्रश्न पोस्ट करें , एक टिप्पणी नहीं।
ईईएए

+1 चूंकि यह उन उपयोगकर्ताओं / समूहों को भी सूचीबद्ध करेगा जो पारंपरिक /etc/passwdऔर /etc/groupफाइलों में नहीं पाए जाते हैं अर्थात जब कोई सिस्टम केंद्रीय निर्देशिका जैसे NIS और LDAP, या किसी अन्य वैकल्पिक उपयोगकर्ता / समूह डेटाबेस का उपयोग करने के लिए कॉन्फ़िगर किया गया है, जब तक कि उपयोगकर्ता / समूह गणना का समर्थन करता है। ।
HBruijn

यदि एन्यूमरेशन बंद है, तो यह सभी उपयोगकर्ताओं और समूहों को एक ldap या sssd config में नहीं लौटाएगा।
जेन्स टिम्मरमैन

16

उपयोगकर्ताओं और उनके समूहों की सूची बनाएँ:

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done

सूची समूह और उनके उपयोगकर्ता:

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
    members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
    echo "$group: $members" | sed 's/,,*/ /g';
done

1
हालांकि यह शायद काम करेगा, यह थोड़ा जटिल लगता है, यह नहीं है, जब ऐसा करने के लिए पूरी तरह से सरल एक-शॉट कमांड हैं?
ईईएए

यह निश्चित रूप से कुछ भी नहीं मिलेगा जो एक केंद्रीकृत भंडार में रहता है। और यह निश्चित रूप से ऐसी जानकारी है जिसे आप देखना चाहते हैं।
मैगेलन

बहुत मददगार, यह उल्लेख करना बेहतर होगा कि वे अलग-अलग कमांड हैं।
मियां असबत अहमद

5

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

cut -d: -f1 /etc/passwd | xargs groups

आउटपुट;

root : root
myuser : root www-data fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev

1
यह चंग के उत्तर के रूप में एक ही समस्या है कि यह LDAP, NIS, आदि जैसे डेटाबेस में उत्पन्न होने वाले उपयोगकर्ताओं / समूहों को अनदेखा करता है
MadHatter

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

3

सभी उपयोगकर्ताओं को सूचीबद्ध करें

cut -d':' -f 1 /etc/passwd

या

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

जबकि बिल्ली / etc / passwd सभी उपयोगकर्ताओं को दिखाता है (और अन्य सामान का एक गुच्छा), cut -d ':' -f 1 प्रत्येक रेखा को '' के साथ विभाजित करने का एक सरल तरीका है: '' सीमांकक के रूप में और केवल पहले फ़ील्ड को निकालें (उपयोगकर्ता )। बहुत ही अजीब संस्करण के रूप में ही है।

सभी समूहों की सूची बनाएं

cut -d':' -f 1 /etc/group

या

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

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

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

compgen -u
compgen -g

2
हाय इलियट बैली, सर्वर दोष के लिए आपका स्वागत है! कृपया ध्यान दें कि यह प्रश्न 5 वर्ष से अधिक पुराना है, और पहले से ही इसका एक सही और स्वीकृत उत्तर है। यह भी ध्यान दें कि आपका समाधान केवल तभी काम करता है जब उपयोगकर्ता / etc / passwd में संग्रहीत हैं; स्वीकृत उत्तर अन्य उपयोगकर्ता डेटाबेस (जैसे NIS या LDAP) के लिए भी काम करता है। यदि आप पुराने प्रश्नों का उत्तर देना चाहते हैं (जो पूरी तरह से ठीक है!) तो आप अनुत्तरित प्रश्नों की सूची पर एक नज़र डालना चाहते हैं - बहुत सारे प्रश्न कुछ प्यार की तलाश में हैं!
मार्सेलम

-1

डेबियन के लिए

cat /etc/passwd # show all users
cat /etc/group # show all groups
cat /etc/passwd | grep group # show all users with specified group

2
पहले से स्वीकार किए गए इसके विपरीत यह उन उपयोगकर्ताओं / समूहों को सूचीबद्ध नहीं करता है जो एलडीएपी, एनआईएस आदि जैसे दूरस्थ उपयोगकर्ता डेटाबेस से उत्पन्न होते हैं ....
HBruijn

-2

ऐशे ही:

sudo cat /etc/gshadow |grep group
sudo cat /etc/gshadow |grep username

1
नहीं, /etc/gshadowसमूह के सदस्यों ( /etc/groupकरता है) और 4.5 साल पहले का स्वीकृत जवाब किसी भी तरह से सामान्य नहीं है, क्योंकि यह दूरस्थ समूहों को भी संभालता है।
स्वेन

-2

इस आदेश का उपयोग उस समूह के सभी समूह और उपयोगकर्ताओं को प्राप्त करने के लिए करें।

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