How to list all users in a Linux group?

后端 未结 20 1180
春和景丽
春和景丽 2020-12-07 06:51

How do I list all members of a group in Linux (and possibly other unices)?

20条回答
  •  时光取名叫无心
    2020-12-07 07:40

    I've done this similar to the perl code above, but replaced getent and id with native perl functions. It is much faster and should work across different *nix flavors.

    #!/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";
    

提交回复
热议问题