diff options
author | Günther Deschner <gd@samba.org> | 2006-03-29 14:52:03 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:15:46 -0500 |
commit | 2ab46a7a93c0979eae1e94b74ed80447ea3ff46e (patch) | |
tree | 11de0c65ce15f764c869171fbcb913cb21f53154 /source3 | |
parent | c684ca9b1f7334da2dab242a0af7d91120e09f54 (diff) | |
download | samba-2ab46a7a93c0979eae1e94b74ed80447ea3ff46e.tar.gz samba-2ab46a7a93c0979eae1e94b74ed80447ea3ff46e.tar.bz2 samba-2ab46a7a93c0979eae1e94b74ed80447ea3ff46e.zip |
r14756: Make smbpasswd -a root work for eDirectory where there is no "account"
structural objectclass.
Guenther
(This used to be commit 7eefeaad352597b6f97160b1abc0dc032c0b46b2)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/passdb/pdb_ldap.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index c609ab89f7..913a696fb1 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -940,9 +940,16 @@ static BOOL init_ldap_from_sam (struct ldapsam_privates *ldap_state, * took out adding "objectclass: sambaAccount" * do this on a per-mod basis */ - if (need_update(sampass, PDB_USERNAME)) + if (need_update(sampass, PDB_USERNAME)) { smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods, "uid", pdb_get_username(sampass)); + if (ldap_state->is_nds_ldap) { + smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods, + "cn", pdb_get_username(sampass)); + smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, existing, mods, + "sn", pdb_get_username(sampass)); + } + } DEBUG(2, ("init_ldap_from_sam: Setting entry for user: %s\n", pdb_get_username(sampass))); @@ -1525,10 +1532,16 @@ static NTSTATUS ldapsam_modify_entry(struct pdb_methods *my_methods, /* may be password change below however */ } else { switch(ldap_op) { - case LDAP_MOD_ADD: - smbldap_set_mod(&mods, LDAP_MOD_ADD, - "objectclass", - LDAP_OBJ_ACCOUNT); + case LDAP_MOD_ADD: + if (ldap_state->is_nds_ldap) { + smbldap_set_mod(&mods, LDAP_MOD_ADD, + "objectclass", + "inetOrgPerson"); + } else { + smbldap_set_mod(&mods, LDAP_MOD_ADD, + "objectclass", + LDAP_OBJ_ACCOUNT); + } rc = smbldap_add(ldap_state->smbldap_state, dn, mods); break; |