[Samba] Samba NT4 to AD- LDAP

Andrew Bartlett abartlet at samba.org
Sat Mar 24 19:01:57 UTC 2018


On Sat, 2018-03-24 at 12:50 +0000, Praveen Ghimire via samba wrote:
> Hi Rowland,
> 
> I did that initially and that came with 
> Failed to connect to ldap URL 'ldap://lin-pdc.lin - LDAP client internal error: NT_STATUS_BAD_NETWORK_NAME
> Hence I removed the whole ldap:// bit
> 
> After your email I tried again but using ldap://localhost and it seems to have worked. Not sure what the issue is with the fqdn. I could run ldap queries when using fqdn.
> 

This patch should fix it.

Praveen can you test it?  

Rowland, after Praveen has tested it, perhaps you would like to review
it?  We don't have the infrastructure for a test against the LDAP
backend (a long-standing problem) so sadly there is no automatic test. 

Thanks,

Andrew Bartlett

> Regards,
> 
> Praveen Ghimire
> 
> 
> 
> -----Original Message-----
> From: samba [mailto:samba-bounces at lists.samba.org] On Behalf Of Rowland Penny via samba
> Sent: Saturday, 24 March 2018 10:36 PM
> To: samba at lists.samba.org
> Subject: Re: [Samba] Samba NT4 to AD- LDAP
> 
> On Sat, 24 Mar 2018 11:59:38 +0000
> Praveen Ghimire via samba <samba at lists.samba.org> wrote:
> 
> > Hi All,
> > 
> > Following the link, tried to migrate NT4 to AD using LDAP but came 
> > across some issues.
> > https://wiki.samba.org/index.php/Migrating_a_Samba_NT4_Domain_to_Samba
> > _AD_(Classic_Upgrade)
> > 
> > I have done this step multiple times using TDB as the backend and it 
> > has always worked.
> > 
> > The issue I am seeing is when I run the following, we get
> > ERROR(<type 'exceptions.IndexError'>): uncaught exception - list index 
> > out of range File
> 
> OK, the above tells you what the error is
> 
> > File "/usr/lib/python2.7/dist-packages/samba/upgrade.py", line 664, in 
> > upgrade_from_samba3 urls = samba3.lp.get("passdb
> > backend").split(":",1)[1].strip('"')
> 
> The above shows you where it is coming from 
> 
> >   passdb backend = ldapsam
> 
> Because of the above ;-)
> 
> If you look closely at what fails:
> 
> samba3.lp.get("passdb backend").split(":",1)[1].strip('"')
> 
> It takes the 'passdb backend' line and tries to split it at the ':'
> character and then removes any ' " '
> 
> Now you know what is wrong, how to fix it ?
> 
> In the short term, try changing the 'passdb backend' line in smb.conf to
> this:
> 
> passdb backend = ldapsam:"ldap://lin-pdc.lin/"
> 
> Rowland
> 
> 
> 
> --
> To unsubscribe from this list go to the following URL and read the
> instructions:  https://lists.samba.org/mailman/options/samba
> 
> ______________________________________________________________________
> This email has been scanned by the Symantec Email Security.cloud service.
> For more information please visit http://www.symanteccloud.com ______________________________________________________________________
-- 
Andrew Bartlett                       http://samba.org/~abartlet/
Authentication Developer, Samba Team  http://samba.org
Samba Developer, Catalyst IT          http://catalyst.net.nz/services/samba
-------------- next part --------------
From 60f5ba8ff239b0ba762b220bdc66c1d240156d00 Mon Sep 17 00:00:00 2001
From: Andrew Bartlett <abartlet at samba.org>
Date: Sun, 25 Mar 2018 07:47:42 +1300
Subject: [PATCH] samba-tool domain classicupgrade: allow upgrade from default
 LDAP on localhost

This default is specified by smbldap_init() used by the ldap passdb backend.

Signed-off-by: Andrew Bartlett <abartlet at samba.org>
---
 python/samba/upgrade.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/python/samba/upgrade.py b/python/samba/upgrade.py
index ff470665fe9..9ceed97a362 100644
--- a/python/samba/upgrade.py
+++ b/python/samba/upgrade.py
@@ -665,7 +665,12 @@ Please fix this account before attempting to upgrade again
         creds.guess(samba3.lp)
         creds.set_bind_dn(ldapuser)
         creds.set_password(ldappass)
-        urls = samba3.lp.get("passdb backend").split(":",1)[1].strip('"')
+
+        try:
+            urls = samba3.lp.get("passdb backend").split(":",1)[1].strip('"')
+        except IndexError:
+            urls = "ldap://localhost"
+
         for url in urls.split():
             try:
                 ldb_object = Ldb(url, credentials=creds)
-- 
2.14.3



More information about the samba mailing list