diff options
author | Kai Blin <kai@samba.org> | 2007-08-12 17:36:42 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:29:32 -0500 |
commit | 0bb638a7987fe499bc31354e2c846161d4cef294 (patch) | |
tree | 6005e0a6fa8c99b2812bd4c7ae07713102fd902e /source3/nsswitch/wbinfo.c | |
parent | 5d39acf2f8cdee9e70a470a638909db7ceb219b2 (diff) | |
download | samba-0bb638a7987fe499bc31354e2c846161d4cef294.tar.gz samba-0bb638a7987fe499bc31354e2c846161d4cef294.tar.bz2 samba-0bb638a7987fe499bc31354e2c846161d4cef294.zip |
r24353: Add a getpwuid lookup to wbinfo.
Merged from my Samba4 GSoC branch.
Volker, can you check if that's done the way you thought?
(This used to be commit f8560ea66ce522ff11d16f0e36e10853fe2639d7)
Diffstat (limited to 'source3/nsswitch/wbinfo.c')
-rw-r--r-- | source3/nsswitch/wbinfo.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/source3/nsswitch/wbinfo.c b/source3/nsswitch/wbinfo.c index 0f218f70f4..e0bda948ed 100644 --- a/source3/nsswitch/wbinfo.c +++ b/source3/nsswitch/wbinfo.c @@ -150,6 +150,35 @@ static BOOL wbinfo_get_userinfo(char *user) return True; } +/* pull pwent info for a given uid */ +static BOOL wbinfo_get_uidinfo(int uid) +{ + struct winbindd_request request; + struct winbindd_response response; + NSS_STATUS result; + + ZERO_STRUCT(request); + ZERO_STRUCT(response); + + request.data.uid = uid; + + result = winbindd_request_response(WINBINDD_GETPWUID, &request, &response); + + if (result != NSS_STATUS_SUCCESS) + return False; + + d_printf( "%s:%s:%d:%d:%s:%s:%s\n", + response.data.pw.pw_name, + response.data.pw.pw_passwd, + response.data.pw.pw_uid, + response.data.pw.pw_gid, + response.data.pw.pw_gecos, + response.data.pw.pw_dir, + response.data.pw.pw_shell ); + + return True; +} + /* pull grent for a given group */ static BOOL wbinfo_get_groupinfo(char *group) { @@ -1196,6 +1225,7 @@ enum { OPT_SEPARATOR, OPT_LIST_ALL_DOMAINS, OPT_LIST_OWN_DOMAIN, + OPT_UID_INFO, OPT_GROUP_INFO, }; @@ -1237,6 +1267,7 @@ int main(int argc, char **argv, char **envp) { "sequence", 0, POPT_ARG_NONE, 0, OPT_SEQUENCE, "Show sequence numbers of all domains" }, { "domain-info", 'D', POPT_ARG_STRING, &string_arg, 'D', "Show most of the info we have about the domain" }, { "user-info", 'i', POPT_ARG_STRING, &string_arg, 'i', "Get user info", "USER" }, + { "uid-info", 0, POPT_ARG_INT, &int_arg, OPT_UID_INFO, "Get user info from uid", "UID" }, { "group-info", 0, POPT_ARG_STRING, &string_arg, OPT_GROUP_INFO, "Get group info", "GROUP" }, { "user-groups", 'r', POPT_ARG_STRING, &string_arg, 'r', "Get user groups", "USER" }, { "user-domgroups", 0, POPT_ARG_STRING, &string_arg, @@ -1410,6 +1441,13 @@ int main(int argc, char **argv, char **envp) goto done; } break; + case OPT_UID_INFO: + if ( !wbinfo_get_uidinfo(int_arg)) { + d_fprintf(stderr, "Could not get info for uid " + "%d\n", int_arg); + goto done; + } + break; case OPT_GROUP_INFO: if ( !wbinfo_get_groupinfo(string_arg)) { d_fprintf(stderr, "Could not get info for " |