Winbind issue after upgrading from 4.7.x to 4.8.x
miguel.sanders.external at arcelormittal.com
miguel.sanders.external at arcelormittal.com
Thu Aug 9 12:49:06 UTC 2018
Hi guys
We recently upgraded our Samba clusters from 4.7.x to 4.8.x and noticed
a difference in behavior when AD users have a (local) Linux user equivalent.
Assume we have a local Linux user XYZ (UID 519) as well as a AD user
object XYZ (UID 30001).
4.7.x
# id XYZ
uid=519(XYZ) gid=1(bin) groups=1(bin)
4.8.x
# id XYZ
uid=519(XYZ) gid=1(bin) groups=1(bin),30004(DOMAIN+domain users)
The problem originates from the parse_domain_user() function in
winbindd_util.c
In 4.7.x, if there is no winbind separator and no '@' in domuser, the
function simply returns false.
bool parse_domain_user(const char *domuser, fstring domain, fstring user)
{
char *p = strchr(domuser,*lp_winbind_separator());
if ( !p ) {
fstrcpy(user, domuser);
p = strchr(domuser, '@');
if ( assume_domain(lp_workgroup()) && p == NULL) {
fstrcpy(domain, lp_workgroup());
} else if (p != NULL) {
fstrcpy(domain, p + 1);
user[PTR_DIFF(p, domuser)] = 0;
} else {
*return False;*
}
} else {
fstrcpy(user, p+1);
fstrcpy(domain, domuser);
domain[PTR_DIFF(p, domuser)] = 0;
}
return strupper_m(domain);
}
In 4.8.x, we have reversed logic but the function returns true even
though there is no winbind separator and no '@' in domuser.
bool parse_domain_user(const char *domuser,
fstring namespace,
fstring domain,
fstring user)
{
char *p = NULL;
if (strlen(domuser) == 0) {
return false;
}
p = strchr(domuser, *lp_winbind_separator());
if (p != NULL) {
fstrcpy(user, p + 1);
fstrcpy(domain, domuser);
domain[PTR_DIFF(p, domuser)] = '\0';
fstrcpy(namespace, domain);
} else {
fstrcpy(user, domuser);
domain[0] = '\0';
namespace[0] = '\0';
p = strchr(domuser, '@');
if (p != NULL) {
/* upn */
fstrcpy(namespace, p + 1);
} else if (assume_domain(lp_workgroup())) {
fstrcpy(domain, lp_workgroup());
fstrcpy(namespace, domain);
}
}
return strupper_m(domain);
}
We are simply missing the else block which should return false (similar
to the 4.7.x code).
Attached a simply patch which solves the issue.
Review is appreciated
Many thanks
--
Met vriendelijke groeten
Best regards
*Miguel Sanders*
ArcelorMittal Europe – Flat Products – Business Division North
External collaborator | Midrange UNIX
John Kennedylaan 51 B-9042 Gent
*T* +32 9 347 52 78
*E* gen-sid-ism-cbi-sig at arcelormittal.com
*E* miguel.sanders.external at arcelormittal.com
-------------- next part --------------
--- /tmp/winbindd_util.c 2018-06-26 16:42:46.000000000 +0200
+++ winbindd_util.c 2018-08-09 14:43:56.386223278 +0200
@@ -1605,6 +1605,8 @@
} else if (assume_domain(lp_workgroup())) {
fstrcpy(domain, lp_workgroup());
fstrcpy(namespace, domain);
+ } else {
+ return false;
}
}
More information about the samba-technical
mailing list