2
nss sample code for extended winbindd functionality
4
Copyright (C) Andrew Tridgell (tridge@samba.org)
6
you are free to use this code in any way you see fit, including
7
without restriction, using this code in your own products. You do
8
not need to give any attribution.
14
cc -o wbtest wbtest.c nss_winbind.c -ldl
18
./wbtest /lib/libnss_winbind.so
31
#include <sys/types.h>
33
#include "nss_winbind.h"
35
static int nss_test_users(struct nss_state *nss)
39
if (nss_setpwent(nss) != 0) {
44
/* loop over all users */
45
while ((nss_getpwent(nss, &pwd) == 0)) {
46
char *sid, **group_sids, *name2;
49
printf("User %s\n", pwd.pw_name);
50
if (nss_nametosid(nss, pwd.pw_name, &sid) != 0) {
54
printf("\tSID %s\n", sid);
56
if (nss_sidtoname(nss, sid, &name2) != 0) {
60
printf("\tSID->name %s\n", name2);
62
if (nss_getusersids(nss, sid, &group_sids) != 0) {
63
perror("getusersids");
67
printf("\tGroups:\n");
68
for (i=0; group_sids[i]; i++) {
69
printf("\t\t%s\n", group_sids[i]);
79
if (nss_endpwent(nss) != 0) {
89
main program. It lists all users, listing user SIDs for each user
91
int main(int argc, char *argv[])
94
const char *so_path = "/lib/libnss_winbind.so";
101
if (nss_open(&nss, so_path) != 0) {
106
ret = nss_test_users(&nss);