একটি লিনাক্স গ্রুপের সমস্ত ব্যবহারকারীকে কীভাবে তালিকাভুক্ত করবেন?


273

আমি কীভাবে লিনাক্সের একটি গোষ্ঠীর সমস্ত সদস্যকে তালিকাবদ্ধ করব (এবং সম্ভবত অন্যান্য ইউনিট)?


1
@ সিলমারী 89, তিনি যদি প্রোগ্রাম থেকে এটি করতে চান তবে নয়।
পল টমলিন

2
আমি এখানে নতুন, আমি জানতে পেরেছি যে এসএফ উপস্থিত রয়েছে আমি প্রশ্ন পোস্ট করার ঠিক পরে। আমি সম্মত হই যে এটি এসএফ বা এসও এর অন্তর্গত।
ব্যবহারকারী 323094

5
হেই, অবশ্যই, এখন এটির একটি প্রোগ্রামিক সমাধান রয়েছে, সুতরাং এটি এখানেও ন্যায়সঙ্গত হতে পারে।
জেড

উত্তর:


103

দুর্ভাগ্যক্রমে, আমি জানি যে এটি করার কোনও ভাল, পোর্টেবল উপায় নেই। যদি আপনি / ইত্যাদি / গোষ্ঠীটি পার্স করার চেষ্টা করেন, যেমন অন্যরা পরামর্শ দিচ্ছেন, আপনি যে ব্যবহারকারীদের সেই প্রাথমিক গ্রুপ হিসাবে রয়েছেন এবং ইউএনআইএক্স ফ্ল্যাট ফাইলগুলি (যেমন এলডিএপি, এনআইএস, প্যাম-পিএসএসকিএল ইত্যাদি)।

যদি আমাকে নিজেই এটি করতে হয় তবে আমি সম্ভবত এটি বিপরীতে করব: idসিস্টেমে প্রতিটি ব্যবহারকারীর গোষ্ঠী পেতে (যা এনএসএসের কাছে দৃশ্যমান সমস্ত উত্সকে টানবে) ব্যবহার করতে, এবং পার্স বা হ্যাশ বজায় রাখতে অনুরূপ কিছু ব্যবহার করবে প্রতিটি দলের জন্য টেবিলটি ব্যবহারকারীর সদস্যতার বিষয়টি লক্ষ্য করে আবিষ্কার করেছে।

সম্পাদনা: অবশ্যই, এটি আপনাকে একই ধরণের সমস্যার সাথে ছেড়ে দেয়: সিস্টেমে প্রতিটি ব্যবহারকারীর তালিকা কীভাবে পাবেন। যেহেতু আমার অবস্থানটিতে কেবল ফ্ল্যাট ফাইল এবং এলডিএপি ব্যবহার করা হয়েছে, তাই আমি উভয় অবস্থান থেকে কেবল একটি তালিকা পেতে পারি, তবে এটি আপনার পরিবেশের জন্য সত্য বা নাও হতে পারে।

সম্পাদনা 2: পাস করার সময় কেউ আমাকে স্মরণ করিয়ে দিয়েছিল যে getent passwdএটি এলডিএপি / এনআইএস / ইত্যাদি সহ সিস্টেমের সমস্ত ব্যবহারকারীর একটি তালিকা ফিরিয়ে দেবে, তবে getent group এখনও কেবলমাত্র ডিফল্ট গোষ্ঠী প্রবেশের মাধ্যমে সদস্য হওয়া ব্যবহারকারীদের হাতছাড়া করবে, যাতে আমাকে অনুপ্রাণিত করে এই দ্রুত হ্যাক লিখুন।


#!/usr/bin/perl -T
#
# Lists members of all groups, or optionally just the group
# specified on the command line
#
# Copyright © 2010-2013 by Zed Pobre (zed@debian.org or zed@resonant.org)
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#

use strict; use warnings;

$ENV{"PATH"} = "/usr/bin:/bin";

my $wantedgroup = shift;

my %groupmembers;
my $usertext = `getent passwd`;

my @users = $usertext =~ /^([a-zA-Z0-9_-]+):/gm;

foreach my $userid (@users)
{
    my $usergrouptext = `id -Gn $userid`;
    my @grouplist = split(' ',$usergrouptext);

    foreach my $group (@grouplist)
    {
        $groupmembers{$group}->{$userid} = 1;
    }
}

if($wantedgroup)
{
    print_group_members($wantedgroup);
}
else
{
    foreach my $group (sort keys %groupmembers)
    {
        print "Group ",$group," has the following members:\n";
        print_group_members($group);
        print "\n";
    }
}

sub print_group_members
{
    my ($group) = @_;
    return unless $group;

    foreach my $member (sort keys %{$groupmembers{$group}})
    {
        print $member,"\n";
    }
}

3
সকলকে উত্তর দেবার জন্য ধন্যবাদ। আমি এটি করার জন্য পোর্টেবল উপায় খুঁজছিলাম। আপনার তথ্য যে কোনও সহজ এবং বহনযোগ্য উপায় নেই সেগুলি সহায়ক ছিল। আপনি যে পরিস্থিতি আমাকে আরও গভীরভাবে বুঝতে সাহায্য করেছেন সে সম্পর্কে আপনি সবিস্তারে বিস্তারিত বর্ণনা করেছেন, আমি এটির প্রশংসা করি এবং আমি আপনার উত্তরটিকে গ্রহণযোগ্য হিসাবে বেছে নিয়েছি।
ব্যবহারকারী 323094

2
লিনাক্স ফাউন্ডেশনে আপনার লিপিটি দান করা কি সম্ভব হবে? এটি ২০১২ এবং এখনও কোনও গ্রুপের সদস্যদের পাওয়ার সহজ উপায় নেই। এই জিনিসটি আমাকে লিনাক্স সম্পর্কে হতাশ করে।
winteck

6
আমি আপনার জন্য একটি আইএসসি -র মতো লাইসেন্স যুক্ত করেছি, এটি যে কোনও গ্রুপের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত। আপনার মনে হয় এটি যে কোনও জায়গায় জমা দেওয়া নির্দ্বিধায় এটি গ্রহণ করা হবে।
জেড

পিএএম অ্যাকাউন্টের তথ্য সরবরাহ করে না। এটি নাম পরিষেবা স্যুইচ (এনএসবিচ) যা তা করে। সমস্ত 'ডাটাবেস' (ডেটা সরবরাহকারী) গণনা সমর্থন করবে getent passwdনা যাতে কাজ নাও করা যায় (উদাহরণস্বরূপ আপনি এসএসডি ব্যবহার করছেন)।

পিএএম বনাম এনএসএস সম্পর্কে বৈধ পয়েন্ট - আমি উল্লেখটি পরিবর্তন করেছি changed যদিও আমি এটি ব্যবহার করি নি, এসএসডি একটি উপযুক্ত ডেটা সরবরাহকারীর চেয়ে প্রথম নজরে এনএসসিডি প্রতিস্থাপনের মতো দেখায়, এবং যদি এটি ভেঙে যায় তবে getent passwdআমি এসএসডি-তে থাকা একটি বাগটি বিবেচনা করব।
জেড

239
getent group <groupname>;

এটি লিনাক্স এবং সোলারিস উভয়ই পোর্টেবল এবং এটি স্থানীয় গ্রুপ / পাসওয়ার্ড ফাইল, এনআইএস এবং এলডিএপি কনফিগারেশনের সাথে কাজ করে।


43
গ্রুপটি ব্যবহারকারীদের তাদের ডিফল্ট গ্রুপ হিসাবে দেখায় না।
rlpowell

40

গ্রুপ মেম্বারদের তালিকা করতে পাইথন ব্যবহার করুন:

পাইথন-সি "আমদানি জিআরপি; প্রিন্ট করুন grp.getgrnam ('GROUP_NAME') [3]"

Https://docs.python.org/2/library/grp.html দেখুন


1
দুর্ভাগ্যক্রমে, ডোমেন গ্রুপের সদস্যদের রিপোর্ট করবেন না।
সিমলিভ

39
lid -g groupname | cut -f1 -d'(' 

7
এটি সর্বোত্তম উপায় হবে exceptাকনাটি কোনও মানসম্পন্ন ডেবিয়ান ইনস্টলেশনতে না থাকলে। উবুন্টুতে এটি লিউবার optionচ্ছিক প্যাকেজটিতে রয়েছে (এটি একই নামের আইডি-ব্যবহারগুলির মধ্যে একটি নয়)। আমি এটি ডেবিয়ানটিতে
পাইনি

বৈজ্ঞানিক লিনাক্সে আমার জন্য কাজ করেছেন
ব্লু

ডেবিয়ান হুইজি-তে, idাকনাটিও লিউবার প্যাকেজে রয়েছে
লুওস

2
@JohnMcGehee RHEL AustereLinux নামক করা উচিত ছিল
goelakash

1
'-জি' আমার পক্ষে কোনও বিকল্প নয়। আমার উবুন্টু 16.04 এ আইডি-ইউটিস সংস্করণ 4.6 ইনস্টল করা আছে।
উইলসন বিগস

25

নিম্নলিখিত কমান্ডটি সমস্ত ব্যবহারকারীদের তালিকাভুক্ত করবে <your_group_name>, তবে কেবলমাত্র /etc/groupডেটাবেস দ্বারা পরিচালিত , এলডিএপি, এনআইএস ইত্যাদি নয় এটি কেবলমাত্র মাধ্যমিক গোষ্ঠীগুলির জন্যই কাজ করে , এটি প্রাথমিক গ্রুপ হওয়ার কারণে যে গোষ্ঠীটিকে প্রাথমিক হিসাবে সেট করা হয়েছে তাদের তালিকা তৈরি করবে না GIDফাইলটিতে (সংখ্যার গ্রুপ আইডি) হিসাবে সঞ্চিত /etc/passwd

grep <your_group_name> /etc/group

4
আপনি গ্রাইপ <ব্যবহারকারীর নাম / ইত্যাদি / গোষ্ঠীর মতো সেই ফাইলটিতে সরাসরি গ্রেপ করতে পারেন। দ্রুত এবং ওভারহেড কম।
পেইন্টবক্স

16

নিম্নলিখিত কমান্ডটি সমস্ত ব্যবহারকারীদের তালিকাভুক্ত করবে <your_group_name>, তবে কেবলমাত্র /etc/groupডেটাবেস দ্বারা পরিচালিত , এলডিএপি, এনআইএস ইত্যাদি নয় এটি কেবলমাত্র মাধ্যমিক গোষ্ঠীগুলির জন্যই কাজ করে , এটি প্রাথমিক গ্রুপ হওয়ার কারণে যে গোষ্ঠীটিকে প্রাথমিক হিসাবে সেট করা হয়েছে তাদের তালিকা তৈরি করবে না GIDফাইলটিতে (সংখ্যার গ্রুপ আইডি) হিসাবে সঞ্চিত /etc/passwd

awk -F: '/^groupname/ {print $4;}' /etc/group

7
গ্রুপটি ব্যবহারকারীদের তাদের ডিফল্ট গ্রুপ হিসাবে দেখায় না।
rlpowell

3
এনআইএস এবং এলডিএপি চেক করে না।
পাওয়ে নাদলসকি

12

নিম্নলিখিত শেল স্ক্রিপ্টটি সমস্ত ব্যবহারকারীর মাধ্যমে পুনরাবৃত্তি হবে এবং কেবলমাত্র প্রদত্ত গোষ্ঠীর সাথে সম্পর্কিত যারা ব্যবহারকারীর নাম মুদ্রণ করবে:

#!/usr/bin/env bash
getent passwd | while IFS=: read name trash
do
    groups $name 2>/dev/null | cut -f2 -d: | grep -i -q -w "$1" && echo $name
done
true

ব্যবহারের উদাহরণ:

./script 'DOMAIN+Group Name'

দ্রষ্টব্য: এই সমাধানটি ব্যবহারকারী এবং গোষ্ঠীগুলির জন্য (কেবল passwdএবং groupফাইলগুলি নয়) এনআইএস এবং এলডিএপি পরীক্ষা করবে । এটি ব্যবহারকারীদের কোনও গোষ্ঠীতে যোগ করা হয়নি তবে গ্রুপটিকে প্রাথমিক গোষ্ঠী হিসাবে সেট করা অ্যাকাউন্টগুলিতেও নেবে।

সম্পাদনা করুন: বিরল দৃশ্যের জন্য যুক্ত করা ফিক্স যেখানে ব্যবহারকারী একই নামের গোষ্ঠীভুক্ত নয়।

সম্পাদনা: শেল স্ক্রিপ্ট আকারে লিখিত; @ ম্যাক্স চের্নিয়াক ওরফে হাকুনিনের পরামর্শ অনুসারে স্থিতি trueদিয়ে প্রস্থান করতে যোগ করা হয়েছে ; সেই ঘটনাগুলি এড়িয়ে যেতে বাতিল করা হয়েছে ।0stderrgroups: cannot find name for group ID xxxxxx


এটি দুর্দান্ত এবং খুব সংক্ষিপ্ত, তবে এটি গ্রুপের নামটি পাশাপাশি ব্যবহারকারীর নামও মুদ্রণ করে
অ্যান্ড্রু লরিয়েন

@ অ্যান্ড্রুলোরিয়ান, আমি আশা করি আপনার উল্লেখ করা সমস্যাটি আমি ঠিক করেছি, যদি না হয় তবে আরও বিশদ সরবরাহ করুন।
পাওয়ে নাদোলসকি

এই স্নিপেটটি ভাল, তবে এটি প্রস্থান কোড 1 প্রদান করে, এটি 0 না ফেরার কোনও কারণ? সহজ ফিক্স সম্ভবত?
ম্যাক্স চের্নিয়াক

@ হাকুনিন, সর্বশেষ ব্যবহারকারীর নাম গোষ্ঠীভুক্ত না হলে 0 ফিরে আসে না। আপনি যদি চান তবে সর্বদা 0 পেতে আপনি শেষ বয়ানটিতে "|| সত্য" যুক্ত করতে পারেন। কোনও ব্যবহারকারী পাওয়া গেছে কিনা তা দেখতে আপনি আউটপুট চেক করতে পারেন।
পাওয়ে নাদোলসকি

@ PawełNadolski আমি বুঝতে পেরেছি, তাই যোগ শেষ ; true। আপনার কনফিগারেশন ম্যানেজমেন্ট সিস্টেমের (শেফ, উত্তরযোগ্য, ইত্যাদি) ট্রিপ আপ এড়াতে 0 ফেরত দেওয়া ভাল good
সর্বোচ্চ চের্নিয়াক

7

আপনি এটি একটি একক কমান্ড লাইনে করতে পারেন:

cut -d: -f1,4 /etc/passwd | grep $(getent group <groupname> | cut -d: -f3) | cut -d: -f1

উপরের কমান্ডে সমস্ত ব্যবহারকারীকে তাদের প্রাথমিক গোষ্ঠী হিসাবে গ্রুপের নাম তালিকাভুক্ত করা হয়েছে

আপনার কাছে থাকার ব্যবহারকারীর তালিকাকে করতে চান GROUPNAME তাদের মাধ্যমিক দল হিসেবে নিম্নলিখিত কমান্ড প্রয়োগ করুন

getent group <groupname> | cut -d: -f4 |  tr ',' '\n'

1
ক্যাভিয়েট: grepএমন কোনও ব্যবহারকারীর সাথে মিলবে যার নামটিতে গ্রুপ নম্বর রয়েছে (যেমন গোষ্ঠীর sc0ttঅংশ হিসাবে প্রদর্শিত হবে root)। যদি এটি কোনও সমস্যা হয় তবে রেজেক্স ব্যবহার করুন :$(getent group <groupname> | cut -d: -f3)\$(সেমিকোলন, গ্রুপ আইডি এবং লাইনের শেষের সাথে মেলে)। (রেজেক্সে উদ্ধৃতি বা বাশের অভিযোগ যুক্ত করবেন না ins)
স্কট স্টিভেনস

@ স্কটস একটি আইনী গর্ত-পতন। প্রস্তাবিত পদক্ষেপগুলির প্রস্তাব দেবে
ভাওয়িক

3

কিছুটা গ্রেপ এবং টিআর:

$ grep ^$GROUP /etc/group | grep -o '[^:]*$' | tr ',' '\n'
user1
user2
user3

4
গ্রুপটি ব্যবহারকারীদের তাদের ডিফল্ট গ্রুপ হিসাবে দেখায় না।
rlpowell

3

জেডের বাস্তবায়ন সম্ভবত অন্য কয়েকটি বড় ইউএনআইএক্স-তে কাজ করার জন্য প্রসারিত করা উচিত।

কারও সোলারিস বা এইচপি-ইউএক্স হার্ডওয়্যার অ্যাক্সেস আছে ?; এই মামলাগুলি পরীক্ষা করেনি।

#!/usr/bin/perl
#
# Lists members of all groups, or optionally just the group
# specified on the command line
#
# Date:         12/30/2013
# Author:       William H. McCloskey, Jr.
# Changes:      Added logic to detect host type & tailor subset of getent (OSX)
# Attribution:
#   The logic for this script was directly lifted from Zed Pobre's work.
#     See below for Copyright notice.
#   The idea to use dscl to emulate a subset of the now defunct getent on OSX
#     came from
#       http://zzamboni.org/\
#         brt/2008/01/21/how-to-emulate-unix-getent-with-macosxs-dscl/
#     with an example implementation lifted from
#       https://github.com/petere/getent-osx/blob/master/getent
#
# Copyright © 2010-2013 by Zed Pobre (zed@debian.org or zed@resonant.org)
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#

use strict; use warnings;

$ENV{"PATH"} = "/usr/bin:/bin";

# Only run on supported $os:
my $os;
($os)=(`uname -a` =~ /^([\w-]+)/);
unless ($os =~ /(HU-UX|SunOS|Linux|Darwin)/)
    {die "\$getent or equiv. does not exist:  Cannot run on $os\n";}

my $wantedgroup = shift;

my %groupmembers;

my @users;

# Acquire the list of @users based on what is available on this OS:
if ($os =~ /(SunOS|Linux|HP-UX)/) {
    #HP-UX & Solaris assumed to be like Linux; they have not been tested.
    my $usertext = `getent passwd`;
    @users = $usertext =~ /^([a-zA-Z0-9_-]+):/gm;
};
if ($os =~ /Darwin/) {
    @users = `dscl . -ls /Users`;
    chop @users;
}

# Now just do what Zed did - thanks Zed.
foreach my $userid (@users)
{
    my $usergrouptext = `id -Gn $userid`;
    my @grouplist = split(' ',$usergrouptext);

    foreach my $group (@grouplist)
    {
        $groupmembers{$group}->{$userid} = 1;
    }
}

if($wantedgroup)
{
    print_group_members($wantedgroup);
}
else
{
    foreach my $group (sort keys %groupmembers)
    {
        print "Group ",$group," has the following members:\n";
        print_group_members($group);
        print "\n";
    }
}

sub print_group_members
{
    my ($group) = @_;
    return unless $group;

    foreach my $member (sort keys %{$groupmembers{$group}})
    {
        print $member,"\n";
    }
}

যদি এই পরামর্শটি ভাগ করে নেওয়ার আরও ভাল উপায় থাকে তবে দয়া করে আমাকে জানান; আমি অনেক উপায়ে বিবেচনা করেছি, এবং এটিই আমি সামনে এসেছি।


সোলারিস 10 নিশ্চিত কাজ পরিবর্তন করার পর id -Gnথেকে/usr/xpg4/bin/id -G -n
user667489

3

আমি উপরের পার্ল কোডের মতো এটি করেছি, তবে জেন্টেন্ট এবং আইডি দেশীয় পার্ল ফাংশনগুলির সাথে প্রতিস্থাপন করেছি। এটি অনেক দ্রুত এবং বিভিন্ন * নিক্স স্বাদে কাজ করা উচিত।

#!/usr/bin/env perl

use strict;
my $arg=shift;
my %groupMembers; # defining outside of function so that hash is only built once for multiple function calls

sub expandGroupMembers{
my $groupQuery=shift;
unless (%groupMembers){
    while (my($name,$pass,$uid,$gid,$quota,$comment,$gcos,$dir,$shell,$expire)=getpwent()) {
            my $primaryGroup=getgrgid($gid);
            $groupMembers{$primaryGroup}->{$name}=1;
    }
    while (my($gname,$gpasswd,$gid,$members)=getgrent()) {
            foreach my $member (split / /, $members){
                    $groupMembers{$gname}->{$member}=1;
            }
    }
}
my $membersConcat=join(",",sort keys %{$groupMembers{$groupQuery}});
return "$membersConcat" || "$groupQuery Does have any members";
}
print &expandGroupMembers($arg)."\n";

কেবলমাত্র একটি লিঙ্ক সহ একটি উত্তর স্ট্যাক ওভারফ্লোতে একটি ভাল উত্তর বিবেচনা করা হয় না। দয়া করে এটি মুছে ফেলার বিষয়টি বিবেচনা করুন কারণ এটি প্রশ্নের কোনও উত্তর সরবরাহ করে না বা গৃহীত উত্তরের চেয়ে এই উত্তরটি কীভাবে উত্তম তা আরও বিশদভাবে ব্যাখ্যা করুন। বা আপনি যথেষ্ট খ্যাতি অর্জন করার পরে আপনি এটি মন্তব্য হিসাবে যুক্ত করতে পারেন। আপনি সর্বদা আপনার নিজের পোস্টে মন্তব্য করতে পারেন।
দীপেন শাহ

2

এই কার্যকারিতা সরবরাহ করে এমন ' সদস্য ' নামক একটি সুবিধাজনক ডেবিয়ান এবং উবুন্টু প্যাকেজ রয়েছে :

বর্ণনা: একটি গোষ্ঠীর সদস্যদের দেখায়; ডিফল্টরূপে, সমস্ত সদস্যের সদস্য গোষ্ঠীর পরিপূরক: যেখানে গোষ্ঠীগুলি নির্দিষ্ট ব্যবহারকারীদের অন্তর্ভুক্ত গ্রুপগুলি দেখায়, সদস্যরা নির্দিষ্ট গোষ্ঠীর সাথে সম্পর্কিত ব্যবহারকারীদের দেখায়।

... আপনি প্রাথমিক সদস্যদের জন্য, মাধ্যমিক সদস্যদের জন্য, উভয়ই এক লাইনে, আলাদা আলাদা লাইনে জিজ্ঞাসা করতে পারেন।


যদি ওপেন ওপেনর্ট ব্যবহার করে?
ব্যবহারকারী 2284570

সত্যই কার্যকর, কিন্তু দুর্ভাগ্যক্রমে ডোমেন গ্রুপের সদস্যদের প্রতিবেদন করে না।
সিমলেভ

1
getent group insert_group_name_here | awk -F ':' '{print $4}' | sed 's|,| |g'

এটি ব্যবহারকারীর একটি স্থান পৃথকীকরণের তালিকা ফিরে আসে যা আমি অ্যারে পপুলেট করতে স্ক্রিপ্টগুলিতে ব্যবহার করেছি।

for i in $(getent group ftp | awk -F ':' '{print $4}' | sed 's|,| |g')
    do
        userarray+=("$i")
    done

অথবা

userarray+=("$(getent group GROUPNAME | awk -F ':' '{print $4}' | sed 's|,| |g')")

0

এখানে একটি স্ক্রিপ্ট রয়েছে যা / etc / passwd এবং / etc / গ্রুপের ব্যবহারকারীদের একটি তালিকা দেয় যা এটি এনআইএস বা এলডিএপি চেক করে না, তবে এটি এমন ব্যবহারকারীদের দেখায় যাঁরা এই গ্রুপটি তাদের ডিফল্ট গ্রুপ হিসাবে ডিবিয়ান ৪.7 এবং সোলারিস ris তে পরীক্ষা করেছেন

#!/bin/bash

MYGROUP="user"

# get the group ID
MYGID=`grep $MYGROUP /etc/group | cut -d ":" -f3`
if [[ $MYGID != "" ]]
then
  # get a newline-separated list of users from /etc/group 
  MYUSERS=`grep $MYGROUP /etc/group | cut -d ":" -f4| tr "," "\n"`
  # add a newline
  MYUSERS=$MYUSERS$'\n'
  # add the users whose default group is MYGROUP from /etc/passwod 
  MYUSERS=$MYUSERS`cat /etc/passwd |grep $MYGID | cut -d ":" -f1`

  #print the result as a newline-separated list with no duplicates (ready to pass into a bash FOR loop)
  printf '%s\n' $MYUSERS  | sort | uniq
fi

অথবা ওয়ান-লাইনার হিসাবে আপনি সরাসরি এখান থেকে কেটে পেস্ট করতে পারেন (প্রথম ভেরিয়েবলের গোষ্ঠীর নাম পরিবর্তন করুন)

MYGROUP="user";MYGID=`grep $MYGROUP /etc/group | cut -d ":" -f3`;printf '%s\n' `grep $MYGROUP /etc/group | cut -d ":" -f4| tr "," "\n"`$'\n'`cat /etc/passwd |grep $MYGID | cut -d ":" -f1`  | sort | uniq

0

ইউনিক্সে (জিএনইউ / লিনাক্সের বিপরীতে) তালিকাভুক্তকারী কমান্ড রয়েছে। তালিকার জন্য সোলারিস ম্যান পৃষ্ঠাটি দেখুন ।

নোট করুন যে এই কমান্ডটি মুক্ত-উত্স হেরলুম প্রকল্পের অংশ । আমি ধরে নিই যে এটি জিএনইউ / লিনাক্স থেকে হারিয়েছে কারণ আরএমএস গ্রুপ এবং অনুমতিগুলিতে বিশ্বাস করে না। :-)


1
যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে। - পর্যালোচনা থেকে
knuhol

NAME listusers - print a list of user logins SYNOPSIS listusers [-g groups] [-l logins] DESCRIPTION Listusers prints the name and the gecos information of all users known to the system, sorted by username. Valid options are: -g groups Only print the names of users that belong to the given group. Multiple groups are accepted if separated by commas. -l logins Print only user names that match logins. Multiple user names are accepted if separated by commas.
অ্যালুন কার

উত্তরাধিকার প্রকল্পের ওয়েব সাইট থেকে: উত্তরাধিকারী প্রকল্পটি ইউনিক্সের স্ট্যান্ডার্ড ইউটিলিটিগুলির traditionalতিহ্যগত বাস্তবায়ন সরবরাহ করে। অনেক ক্ষেত্রে, এগুলি ক্যালডেরা এবং সান দ্বারা ওপেন সোর্স হিসাবে প্রকাশিত মূল ইউনিক্স উপাদান থেকে প্রাপ্ত been ইন্টারফেসগুলি traditionalতিহ্যবাহী অনুশীলন অনুসরণ করে; এগুলি সাধারণত সিস্টেম ভি এর সাথে সামঞ্জস্যপূর্ণ থাকে, যদিও সময়ের সাথে সাথে সাধারণ ব্যবহারে পরিণত হওয়া এক্সটেনশনগুলি মাঝে মাঝে সরবরাহ করা হয়। বেশিরভাগ ইউটিলিটিগুলি এমন একটি বৈকল্পিকের মধ্যেও অন্তর্ভুক্ত থাকে যার লক্ষ্য পসিক্স কনফারেন্স হয়।
অ্যালুন কার

0

এখানে একটি খুব সহজ অ্যাডক স্ক্রিপ্ট যা অন্য জবাবগুলিতে তালিকাবদ্ধ সমস্ত সাধারণ সমস্যাগুলি আমলে নিলে:

getent passwd | awk -F: -v group_name="wheel" '
  BEGIN {
    "getent group " group_name | getline groupline;
    if (!groupline) exit 1;
    split(groupline, groupdef, ":");
    guid = groupdef[3];
    split(groupdef[4], users, ",");
    for (k in users) print users[k]
  }
  $4 == guid {print $1}'

আমি এটি আমার এলডিএপ-সক্ষম সক্ষম সেটআপটি দিয়ে ব্যবহার করছি, সোলারিস 8+ এবং এইচপিক্স সহ মান-সম্মতিযুক্ত জেন্ট এবং অ্যাডকের সাথে যে কোনও কিছুতে চালিত।


0
getent group groupname | awk -F: '{print $4}' | tr , '\n'

এটির 3 টি অংশ রয়েছে:

1 - getent group groupname"/ etc / গ্রুপ" ফাইলে গ্রুপটির লাইন দেখায়। বিকল্প cat /etc/group | grep groupname

2 - awkমুদ্রণ কেবলমাত্র একক লাইনে থাকা সদস্যদের ',' দিয়ে তৈরি করা হয়েছে।

3 - trএকটি 'নতুন' রেখা সহ ',' প্রতিস্থাপন করুন এবং প্রতিটি ব্যবহারকারীকে একের পর এক মুদ্রণ করুন।

4 - alচ্ছিক: sortব্যবহারকারীরা যদি খুব বেশি হয় তবে আপনি এর সাথে অন্য একটি পাইপও ব্যবহার করতে পারেন।

শুভেচ্ছা সহ


0

আমি মনে করি সবচেয়ে সহজ উপায় হ'ল নিম্নলিখিত পদক্ষেপগুলি, আপনার কোনও প্যাকেজ বা সফ্টওয়্যার ইনস্টল করার প্রয়োজন হবে না:

  1. প্রথমে আপনি যে গোষ্ঠীর ব্যবহারকারীদের জানতে চান তার জিআইডিটি সন্ধান করুন, এর জন্য অনেকগুলি উপায় রয়েছে: বিড়াল / ইত্যাদি / গোষ্ঠী (শেষ কলামটি জিআইডি) আইডি ব্যবহারকারী (ব্যবহারকারী এমন কেউ যার সাথে সম্পর্কিত দলটি)

  2. এখন আপনি সমস্ত ব্যবহারকারীকে ফাইল / ইত্যাদি / পাসডাব্লুডিতে তালিকাভুক্ত করবেন, তবে আপনি পূর্ববর্তী গোষ্ঠীর সদস্যদের পেতে নিম্নলিখিত কমান্ডের সিক্যুয়েল সহ কয়েকটি ফিল্টার প্রয়োগ করবেন।

কাটা-ডি: -f1,4 / ইত্যাদি / পাসডাব্লু | গ্রেপ জিআইডি (জিআইডি হ'ল আপনি পদক্ষেপ 1 থেকে প্রাপ্ত নম্বর)

কাট কমান্ড ফাইলটির কিছু "কলাম" নির্বাচন করবে, প্যারামিটারটি ডিলিমেটার সেট করে ":" এই ক্ষেত্রে, পরামিতি -f "ক্ষেত্র" (বা কলাম) নির্বাচন করে বাইরে এবং বাইরে (1 টি) প্রদর্শিত হবে ফাইল / ইত্যাদি / পাসডাব্লুড, 1º কলামটি ব্যবহারকারীর নাম এবং 4º ব্যবহারকারীর গোষ্ঠীর জিআইডি), চূড়ান্ত করতে | গ্রেপ জিআইডি কেবলমাত্র গ্রুপটিকে (4º কলামে) ফিল্টার করবে যে আপনি বেছে নিয়েছিল।


0

এখানে আরও একটি পাইথন ওয়ান-লাইনার যা ব্যবহারকারীর ডিফল্ট গ্রুপ সদস্যতা (থেকে /etc/passwd) পাশাপাশি গ্রুপ ডাটাবেস ( /etc/group) থেকে গ্রহণ করে

python -c "import grp,pwd; print set(grp.getgrnam('mysupercoolgroup')[3]).union([u[0] for u in pwd.getpwall() if u.pw_gid == grp.getgrnam('mysupercoolgroup')[2]])"

-1

আমি চেষ্টা করেছি grep 'sample-group-name' /etc/group, এটি এখানে উদাহরণের উপর ভিত্তি করে আপনার নির্দিষ্ট করা গ্রুপের সমস্ত সদস্যকে তালিকাভুক্ত করবে


1
গ্রেপিং /etc/groupইতিমধ্যে কমপক্ষে আরও 3 টি উত্তরে রয়েছে, আপনার উত্তর তাদের সাথে কোন মান যুক্ত করে? এছাড়াও, অন্যান্য সমস্ত উত্তরের মন্তব্য রয়েছে যে এই জাতীয় সমাধানটি কেবলমাত্র মাধ্যমিক গোষ্ঠীগুলির জন্য কাজ করে এবং এলডিএপি, এনআইএস ইত্যাদি দ্বারা পরিচালিত অ্যাকাউন্টের জন্যও কাজ করে না
ডেভিড ফেরেনসি রোগোয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.