diff --git a/docs-xml/manpages/wbinfo.1.xml b/docs-xml/manpages/wbinfo.1.xml index e0d2b6a7408..f970a5e3610 100644 --- a/docs-xml/manpages/wbinfo.1.xml +++ b/docs-xml/manpages/wbinfo.1.xml @@ -146,8 +146,9 @@ This parameter sets the domain on which any specified operations will performed. If special domain name '.' is used to represent the current domain to which winbindd - 8 belongs. Currently only the - , and options honor this parameter. + 8 belongs. A '*' as the domain name + means to enumerate over all domains (NOTE: This can take a long time and use + a lot of memory). @@ -181,7 +182,7 @@ This option will list all groups available in the Windows NT domain for which the samba 7 daemon is operating in. Groups in all trusted domains - will also be listed. Note that this operation does not assign + can be listed with the --domain='*' option. Note that this operation does not assign group ids to any groups that have not already been seen by winbindd 8. @@ -390,7 +391,7 @@ This option will list all users available in the Windows NT domain for which the winbindd 8 daemon is operating in. Users in all trusted domains - will also be listed. Note that this operation does not assign + can be listed with the --domain='*' option. Note that this operation does not assign user ids to any users that have not already been seen by winbindd8 . diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c index 1d1557dcb1d..a1ca7fc5741 100644 --- a/nsswitch/wbinfo.c +++ b/nsswitch/wbinfo.c @@ -1926,9 +1926,16 @@ static bool print_domain_users(const char *domain) /* Send request to winbind daemon */ - /* '.' is the special sign for our own domain */ - if (domain && strcmp(domain, ".") == 0) { + if (domain == NULL) { domain = get_winbind_domain(); + } else { + /* '.' is the special sign for our own domain */ + if ((domain[0] == '\0') || strcmp(domain, ".") == 0) { + domain = get_winbind_domain(); + /* '*' is the special sign for all domains */ + } else if (strcmp(domain, "*") == 0) { + domain = NULL; + } } wbc_status = wbcListUsers(domain, &num_users, &users); @@ -1956,9 +1963,16 @@ static bool print_domain_groups(const char *domain) /* Send request to winbind daemon */ - /* '.' is the special sign for our own domain */ - if (domain && strcmp(domain, ".") == 0) { + if (domain == NULL) { domain = get_winbind_domain(); + } else { + /* '.' is the special sign for our own domain */ + if ((domain[0] == '\0') || strcmp(domain, ".") == 0) { + domain = get_winbind_domain(); + /* '*' is the special sign for all domains */ + } else if (strcmp(domain, "*") == 0) { + domain = NULL; + } } wbc_status = wbcListGroups(domain, &num_groups, &groups);