09-27-2008
retrieving all group names with a given group number
hi,
which Unix/C function can i use to retrieve all group names with a particular group id?
The following C code prints out the group id number of a particular group name:
------------------------------------------------------------------------
#include <stdio.h>
#include <grp.h>
int main(int argc, char * argv[]){
struct group * info;
char ** members;
int i=1;
if(argc < 2){
fprintf(stderr, "usage: %s groupname\n", argv[0]);
exit(-1);
}
info = getgrnam(argv[1]);
if(info == NULL){
printf("%s: no such group\n", argv[1]);
}
else{
printf("group name: %s\n", info -> gr_name);
printf("group id number: %d\n", info -> gr_gid);
}
}
------------------------------------------------------------------
% a.out vulcan1
group name: vulcan1
group id number: 15100
% a.out vulcan2
group name: vulcan2
group id number: 15100
% a.out vulcan3
group name: vulcan3
group id number: 15100
///////////////////////////////////////////////////
I'm looking for a C function that returns "vulcan1", "vulcan2", and "vulcan3"
when I pass in the group id of 15100 (there are only 3 groups with group id of 15100).
Thanks
--Andrew
9 More Discussions You Might Find Interesting
1. Solaris
hi folks,
I've been googling for quite some time, but still can't find anything near it...my problem is the following:
for useradministration in our company we are using ssh/sudo, now whenever I try to add users (we have quite a number of users) with useradd -G groupname for secondary group I... (4 Replies)
Discussion started by: poli
4 Replies
2. Shell Programming and Scripting
I have a file in the following format. Groups of data merge together and the group number is indicated above each group.
1
adrf
dfgr
dfg
2
dfgr
dfgr
3
dfef
dfr
fd
4
fgrt
fgr
fgg
5
fgrt
fgr (3 Replies)
Discussion started by: Lucky Ali
3 Replies
3. Shell Programming and Scripting
Hi All
I do have a file like this with 6 columns. Groups of data merge together and the group number is indicated above each group.
1
1 12 26 289 3.2e-027 GCGTATGGCGGC
2 12 26 215 6.7e+006 TTCCACCTTTTG
3 9 26 175 ... (1 Reply)
Discussion started by: Lucky Ali
1 Replies
4. Shell Programming and Scripting
I've this file and need to sort the data in each group
File would look like this ...
cat file1.txt
Reason : ABC
12345-0023
32123-5400
32442-5333
Reason : DEF
42523-3453
23345-3311
Reason : HIJ
454553-0001
I would like to sort each group on the last 4 fileds and print them... (11 Replies)
Discussion started by: prash184u
11 Replies
5. UNIX for Advanced & Expert Users
Hello,
When listing the file systems (using ls -ltr) , if the group names are longer the group name is getting truncated.
Can someone help with the script which would display the truncated group name?
I appreciate if someone could help in this regard. (1 Reply)
Discussion started by: mike12
1 Replies
6. AIX
Hi,
I have a 2 node Cluster. Which is working in active/passive mode (i.e Node#1 is running and when it goes down the Node#2 takes over)
Now there's this requirement that we need a mount point say /test that should be available in active node #1 and when node #1 goes down and node#2 takes... (6 Replies)
Discussion started by: aixromeo
6 Replies
7. Shell Programming and Scripting
/etc/group
tiadm::345:mk789,po312,jo343,ju454,ko453,yx879,iy345,hn453
bin::2:root,daemon
sys::3:root,bin,adm
adm::4:root,daemon
uucp::5:root
/etc/passwd
mk789:x:234:1::/export/home/dummy:/bin/sh
po312:x:234:1::/export/home/dummy:/bin/sh
ju454:x:234:1::/export/home/dummy:/bin/sh... (6 Replies)
Discussion started by: chidori
6 Replies
8. Programming
I'm trying to return only one row with the highest value for PCT_MAX_USED. Any suggestions?
When I add this code, I get the ORA-00937 error.
trunc(max(decode( kbytes_max, 0, 0, (kbytes_alloc/kbytes_max)*100))) pct_max_used
This is the original and returns all rows.
select (select... (3 Replies)
Discussion started by: progkcp
3 Replies
9. Shell Programming and Scripting
As part of some report generation, I've written a script to fetch the values from DB. But, unluckily, for certain Time ranges(1-9.99,10-19.99 etc), I don't have data in DB.
In such cases, I would like to write zero (0) instead of empty. The desired output will be exported to csv file.
... (1 Reply)
Discussion started by: kumar_karpuram
1 Replies
LEARN ABOUT LINUX
getgrouplist
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.27 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)