David Adam
2013-Apr-04 07:30 UTC
[Samba] classicupgrade from LDAP - failed to find Unix account for machine account
Hi all, We have a somewhat crufty Samba 3 PDC NT-style domain backed on to an OpenLDAP server that we use for both Linux and Windows 7 authentication, thanks to the magic of ldapsam and smbk5pwd. I am investigating the feasability of moving to Samba 4 and have tried upgrading with the classicupgrade tool in both the Samba 4.0.0 packages in Debian unstable and also with GIT v4-0-stable (b341371). The current roadblock is that a machine account produces an error in the migration: init_sam_from_ldap: Failed to find Unix account for CICHLID$ ldapsam_getsampwnam: init_sam_from_ldap failed for user 'CICHLID$'! ERROR(<class 'passdb.error'>): uncaught exception - Unable to get user information for 'CICHLID$', (-1073741724,No such user) Notably all of our Linux machines joined to the domain have posixAccount credentials, but the Windows machines do not. The LDAP entry for this machine is: dn: uid=CICHLID$,ou=Computers,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au objectClass: sambaSamAccount objectClass: account displayName: CICHLID$ sambaAcctFlags: [W ] sambaNTPassword: {elided} sambaPwdLastSet: 1364267120 sambaSID: S-1-5-21-3342141748-1574249315-1264630062-1075 uid: CICHLID$ The entries for all our Windows 7 machines look similar. The Linux machines all also have a posixAccount objectClass with the appropriate attributes. Importantly, we have ldapsam:trusted set in our Samba 3 config, and with the add machine script set to: "/usr/sbin/cpu -C /etc/cpu/cpu-samba.conf useradd -d /dev/null -o %u" (where cpu-samba.conf sets the default container to the Computers OU, disables the home directory and shell, and sets the GID to the computers group). Any suggestions? I am particularly curious as to why the add machine script doesn't appear to be doing anything for Windows machines joined to the domain, and why the classicupgrade script is trying to look for user account details for machine accounts. Thanks, David Adam zanchey at ucc.gu.uwa.edu.au
Andrew Bartlett
2013-Apr-04 08:08 UTC
[Samba] classicupgrade from LDAP - failed to find Unix account for machine account
On Thu, 2013-04-04 at 15:30 +0800, David Adam wrote:> Hi all, > > We have a somewhat crufty Samba 3 PDC NT-style domain backed on to an > OpenLDAP server that we use for both Linux and Windows 7 authentication, > thanks to the magic of ldapsam and smbk5pwd. > > I am investigating the feasability of moving to Samba 4 and have tried > upgrading with the classicupgrade tool in both the Samba 4.0.0 packages in > Debian unstable and also with GIT v4-0-stable (b341371). > > The current roadblock is that a machine account produces an error in the > migration: > > init_sam_from_ldap: Failed to find Unix account for CICHLID$ > ldapsam_getsampwnam: init_sam_from_ldap failed for user 'CICHLID$'! > ERROR(<class 'passdb.error'>): uncaught exception - Unable to get user > information for 'CICHLID$', (-1073741724,No such user) > > Notably all of our Linux machines joined to the domain have posixAccount > credentials, but the Windows machines do not. > > The LDAP entry for this machine is: > dn: uid=CICHLID$,ou=Computers,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au > objectClass: sambaSamAccount > objectClass: account > displayName: CICHLID$ > sambaAcctFlags: [W ] > sambaNTPassword: {elided} > sambaPwdLastSet: 1364267120 > sambaSID: S-1-5-21-3342141748-1574249315-1264630062-1075 > uid: CICHLID$ > > The entries for all our Windows 7 machines look similar. > > The Linux machines all also have a posixAccount objectClass with the > appropriate attributes. > > Importantly, we have ldapsam:trusted set in our Samba 3 config, and with > the add machine script set to: > "/usr/sbin/cpu -C /etc/cpu/cpu-samba.conf useradd -d /dev/null -o %u" > (where cpu-samba.conf sets the default container to the Computers OU, > disables the home directory and shell, and sets the GID to the computers > group). > > Any suggestions? I am particularly curious as to why the add machine > script doesn't appear to be doing anything for Windows machines joined to > the domain, and why the classicupgrade script is trying to look for user > account details for machine accounts.So, what has happened is that I've forced on the 'ldapsam:trusted' in our classicupgrade script, as it makes it much, much easier to set up a migration, as you don't have to set up nss_ldap and then tear it down again. I had assumed that almost all installations of Samba as a DC on LDAP would store the unix account with the Samba account. Andrew Bartlett -- Andrew Bartlett http://samba.org/~abartlet/ Authentication Developer, Samba Team http://samba.org