2
Unix SMB/CIFS implementation.
3
Samba utility functions, used in smbd only
4
Copyright (C) Andrew Tridgell 2002
6
This program is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2 of the License, or
9
(at your option) any later version.
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
16
You should have received a copy of the GNU General Public License
17
along with this program; if not, write to the Free Software
18
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24
This function requires sys_getgrouplist - which is only
25
available in smbd due to it's use of become_root() in a
30
return a full list of groups for a user
32
returns the number of groups the user is a member of. The return will include the
35
remember to free the resulting gid_t array
37
NOTE! uses become_root() to gain correct priviages on systems
38
that lack a native getgroups() call (uses initgroups and getgroups)
40
int getgroups_user(const char *user, gid_t **groups)
45
pwd = getpwnam_alloc(user);
48
max_grp = groups_max();
49
(*groups) = (gid_t *)malloc(sizeof(gid_t) * max_grp);
56
ngrp = sys_getgrouplist(user, pwd->pw_gid, *groups, &max_grp);