diff options
-rw-r--r-- | docs-xml/manpages/wbinfo.1.xml | 9 | ||||
-rw-r--r-- | nsswitch/wbinfo.c | 22 |
2 files changed, 23 insertions, 8 deletions
diff --git a/docs-xml/manpages/wbinfo.1.xml b/docs-xml/manpages/wbinfo.1.xml index e0d2b6a740..f970a5e361 100644 --- a/docs-xml/manpages/wbinfo.1.xml +++ b/docs-xml/manpages/wbinfo.1.xml @@ -146,8 +146,9 @@ <listitem><para>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 <citerefentry><refentrytitle>winbindd</refentrytitle> - <manvolnum>8</manvolnum></citerefentry> belongs. Currently only the - <option>-u</option>, and <option>-g</option> options honor this parameter. + <manvolnum>8</manvolnum></citerefentry> 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). </para></listitem> </varlistentry> @@ -181,7 +182,7 @@ <listitem><para>This option will list all groups available in the Windows NT domain for which the <citerefentry><refentrytitle>samba</refentrytitle> <manvolnum>7</manvolnum></citerefentry> 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 <citerefentry><refentrytitle>winbindd</refentrytitle> <manvolnum>8</manvolnum></citerefentry>. </para></listitem> @@ -390,7 +391,7 @@ <listitem><para>This option will list all users available in the Windows NT domain for which the <citerefentry><refentrytitle>winbindd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> 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 <citerefentry> <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry> .</para></listitem> diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c index 1d1557dcb1..a1ca7fc574 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); |