Package: samba
Version: 2:4.5.2+dfsg-1
Severity: normal
Tags: upstream patch

After upgrading from Samba 4.4.7 to 4.5.2 user authentication stopped working 
in our installation.

We are mapping (via username map script) usernames from full email addresses to 
real Samba usernames so that users can login to Samba server using email 
address as username.
Samba is configured as standalone server.

Upstrean commit 3f82db56cbf2727abd465e28ac02ad2242b47c29 modified client domain 
mapping so that an empty domain is not mapped any more to Samba server domain 
if username contains "@".
Since we have no domain at our site Windows clients send empty domain string to 
Samba when users attempt to log in.
When user tries to login using full email address as username Samba doesn't map 
the empty domain to Samba server domain and authentication fails.

As reported in upstream bug https://bugzilla.samba.org/show_bug.cgi?id=12375 
preserving empty domain is useful only if there is a domain controller.
I'd expect that when Samba configuration is "server role = standalone" empty 
client domain will always be mapped to server domain.

I wrote a simple patch that fixes the problem allowing empty domain mapping if 
Samba role is standalone server.


-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.8.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages samba depends on:
ii  adduser              3.115
ii  dpkg                 1.18.15
ii  init-system-helpers  1.46
ii  libbsd0              0.8.3-1
ii  libc6                2.24-8
ii  libldb1              2:1.1.27-1
ii  libpam-modules       1.1.8-3.3
ii  libpam-runtime       1.1.8-3.3
ii  libpopt0             1.16-10
ii  libpython2.7         2.7.13~rc1-1
ii  libtalloc2           2.1.8-1
ii  libtdb1              1.3.11-2
ii  libtevent0           0.9.31-1
ii  libwbclient0         2:4.5.2+dfsg-1
ii  lsb-base             9.20161125
ii  procps               2:3.3.12-3
ii  python               2.7.11-2
ii  python-dnspython     1.15.0-1
ii  python-samba         2:4.5.2+dfsg-1
pn  python2.7:any        <none>
ii  samba-common         2:4.5.2+dfsg-1
ii  samba-common-bin     2:4.5.2+dfsg-1
ii  samba-libs           2:4.5.2+dfsg-1
ii  tdb-tools            1.3.11-2
ii  update-inetd         4.43

Versions of packages samba recommends:
ii  attr                1:2.4.47-2
ii  logrotate           3.8.7-2
ii  samba-dsdb-modules  2:4.5.2+dfsg-1
ii  samba-vfs-modules   2:4.5.2+dfsg-1

Versions of packages samba suggests:
pn  bind9          <none>
pn  bind9utils     <none>
pn  ctdb           <none>
pn  ldb-tools      <none>
pn  ntp            <none>
pn  smbldap-tools  <none>
pn  ufw            <none>
pn  winbind        <none>

-- Configuration Files:
/etc/logrotate.d/samba changed [not included]

-- no debconf information
Index: samba-4.5.2+dfsg/source3/auth/auth_util.c
===================================================================
--- samba-4.5.2+dfsg.orig/source3/auth/auth_util.c
+++ samba-4.5.2+dfsg/source3/auth/auth_util.c
@@ -109,7 +109,8 @@ NTSTATUS make_user_info_map(TALLOC_CTX *
 	char *internal_username = NULL;
 	bool upn_form = false;
 
-	if (client_domain[0] == '\0' && strchr(smb_name, '@')) {
+	if (client_domain[0] == '\0' && strchr(smb_name, '@') &&
+	    lp_server_role() != ROLE_STANDALONE) {
 		upn_form = true;
 	}
 

Reply via email to