Sponsored Content
Top Forums Shell Programming and Scripting List ALL users in a Unix Group (Primary and Secondary) Post 302318195 by ghostdog74 on Thursday 21st of May 2009 03:44:31 AM
Old 05-21-2009
Quote:
Originally Posted by ckmehta
Is there a command or better combination of cmds that will give me the list of Unix users in a particular Unix group whether their primary group is that group in question (information stored in /etc/passwd) or they are in a secondary group (information stored in /etc/group).

So far all I got is a combination of the following:
groupName=XXXXX
groupId=$( getent group | egrep "^${groupName}:" | cut -d: -f3 )
getent passwd | egrep "^.*:.*:.*:${groupId}" | cut -f1 -d:
getent group | egrep "^${groupName}:" | cut -f4 -d:

(Yeah for all you NIS and/or LDAP guys, I did use the getent commands) Smilie
if you have Python, an alternative
Code:
#!/usr/bin/env python
d={}
for line in open("/etc/group"):
    line=line.strip().split(":")
    users=line[3]
    if users:
        for u in users.split(","):
            d.setdefault(u,[])
            d[u].append(line[0])
for i,j in d.iteritems():
    print "%s is in groups: %s" %(i,j)

output
Code:
# ./test.py
daemon is in groups: ['bin']
user5 is in groups: ['dialout', 'video']
user2 is in groups: ['dialout', 'video']
user3 is in groups: ['dialout', 'video']
user1 is in groups: ['dialout', 'video']
nobody is in groups: ['nogroup']

 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to find All Primary and Secondary Group ID's for a user

Is there any command which can list me all the Group ID's (Primary, Secondary ) assocaited with a single user. Thanks Sanjay (2 Replies)
Discussion started by: sanjay92
2 Replies

2. UNIX for Dummies Questions & Answers

Assigning existing users to a secondary group

Hi!!, I am on HP UX -11. I have created a new group and want to assign some the users to this group without changing their existing group ( The new group is the secondary group for them) Any ideas how to do it?? SAM doesnt seem to be working.. Any way of doing it from command line?? ... (1 Reply)
Discussion started by: jyotipg
1 Replies

3. UNIX for Advanced & Expert Users

Change a users primary group after login

When users login, they are directed to menu (aix script). The menu enables the user to choose an environment to work in. Each environment has a different group id. When a user chooses a menu option, I want to change his primary group to that specific environment's group id. Is this at all possible... (3 Replies)
Discussion started by: terrym
3 Replies

4. UNIX for Advanced & Expert Users

primary-secondary sync problem

hi guys, i am new to this DNS business and i'm having a problem. the setup is bind 9.2.3 is installed on a sun solaris 8 server and is the primary DNS. men and mice suite is installed on another sun solaris 8 and that is our secondary DNS server. problem is recently the secondary DNS stopped... (0 Replies)
Discussion started by: mbannout
0 Replies

5. UNIX for Dummies Questions & Answers

Synchronizing primary and secondary name servers

Hello All, Does some one know how to synchronize the primary name server with the secondary without knowing the domains on which synchronization failed. I have just done /usr/sbin/ndc reload Alternatively how do i find out the domains on which synchronization failed? (4 Replies)
Discussion started by: a2z1982
4 Replies

6. Linux

Secondary linux dist WITHIN primary one

Hi New here so forgive my ignorance and inability to express myself in an informative manner ;) I have a Fedora distribution installed on my development computer. The system we build is meant to run on a slackware dist which is all fine and well. But due to our flow of deployment I would have... (2 Replies)
Discussion started by: inquam
2 Replies

7. Solaris

su: No shell/No directory! if sys is added to a users secondary group

Hi, When I include a user to the secondary group "sys" GID=3 in Solaris 9 OS I'm not able to login. I get these error. The user home directory and the shell exists. Is this because of any security hardening. # su - agent No directory! # su agent su: No shell # grep taddm /etc/passwd... (14 Replies)
Discussion started by: agent001
14 Replies

8. Shell Programming and Scripting

Script to list primary group of users

Dear All I am facing a problem with my script. I have to found the primary group of users . So first I selected all the groups and users register from a specific user : ONE Then I am making a file with all groups attached to the user : ONE Then I am making a file with all... (8 Replies)
Discussion started by: Aswex
8 Replies

9. AIX

How to find Primary & Secondary VIOS?

Hi, In a Dual VIOSs setup having 4 SEA adapters each, how to find which one is Primary and Secondary.? Regards, Siva (2 Replies)
Discussion started by: ksgnathan
2 Replies

10. Solaris

DNS Primary and Secondary

hi there, i using salaris 10 as my DNS server. i have 2 dns server primary and secondary. if primary dns server i edit/update, the other secondary dns server must be sync too. How can i configure if dns server (primary) can sync the secondary? (1 Reply)
Discussion started by: tappetmus
1 Replies
GETGROUPLIST(3) 					     Linux Programmer's Manual						   GETGROUPLIST(3)

NAME
getgrouplist - get list of groups to which a user belongs SYNOPSIS
#include <grp.h> int getgrouplist(const char *user, gid_t group, gid_t *groups, int *ngroups); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): getgrouplist(): _BSD_SOURCE DESCRIPTION
The getgrouplist() function scans the group database (see group(5)) to obtain the list of groups that user belongs to. Up to *ngroups of these groups are returned in the array groups. If it was not among the groups defined for user in the group database, then group is included in the list of groups returned by getgrou- plist(); typically this argument is specified as the group ID from the password record for user. The ngroups argument is a value-result argument: on return it always contains the number of groups found for user, including group; this value may be greater than the number of groups stored in groups. RETURN VALUE
If the number of groups of which user is a member is less than or equal to *ngroups, then the value *ngroups is returned. If the user is a member of more than *ngroups groups, then getgrouplist() returns -1. In this case the value returned in *ngroups can be used to resize the buffer passed to a further call getgrouplist(). VERSIONS
This function is present since glibc 2.2.4. CONFORMING TO
This function is nonstandard; it appears on most BSDs. BUGS
In glibc versions before 2.3.3, the implementation of this function contains a buffer-overrun bug: it returns the complete list of groups for user in the array groups, even when the number of groups exceeds *ngroups. EXAMPLE
The program below displays the group list for the user named in its first command-line argument. The second command-line argument speci- fies the ngroups value to be supplied to getgrouplist(). The following shell session shows examples of the use of this program: $ ./a.out cecilia 0 getgrouplist() returned -1; ngroups = 3 $ ./a.out cecilia 3 ngroups = 3 16 (dialout) 33 (video) 100 (users) Program source #include <stdio.h> #include <stdlib.h> #include <grp.h> #include <pwd.h> int main(int argc, char *argv[]) { int j, ngroups; gid_t *groups; struct passwd *pw; struct group *gr; if (argc != 3) { fprintf(stderr, "Usage: %s <user> <ngroups> ", argv[0]); exit(EXIT_FAILURE); } ngroups = atoi(argv[2]); groups = malloc(ngroups * sizeof (gid_t)); if (groups == NULL) { perror("malloc"); exit(EXIT_FAILURE); } /* Fetch passwd structure (contains first group ID for user) */ pw = getpwnam(argv[1]); if (pw == NULL) { perror("getpwnam"); exit(EXIT_SUCCESS); } /* Retrieve group list */ if (getgrouplist(argv[1], pw->pw_gid, groups, &ngroups) == -1) { fprintf(stderr, "getgrouplist() returned -1; ngroups = %d ", ngroups); exit(EXIT_FAILURE); } /* Display list of retrieved groups, along with group names */ fprintf(stderr, "ngroups = %d ", ngroups); for (j = 0; j < ngroups; j++) { printf("%d", groups[j]); gr = getgrgid(groups[j]); if (gr != NULL) printf(" (%s)", gr->gr_name); printf(" "); } exit(EXIT_SUCCESS); } SEE ALSO
getgroups(2), setgroups(2), getgrent(3), group(5), passwd(5) COLOPHON
This page is part of release 3.25 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. GNU
2008-07-03 GETGROUPLIST(3)
All times are GMT -4. The time now is 09:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy