svn commit: samba r14756 - branches/SAMBA_3_0/source/passdb trunk/source/passdb

gd at samba.org gd at samba.org
Wed Mar 29 14:52:05 GMT 2006


Author: gd
Date: 2006-03-29 14:52:03 +0000 (Wed, 29 Mar 2006)
New Revision: 14756

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14756

Log:
Make smbpasswd -a root work for eDirectory where there is no "account"
structural objectclass.

Guenther

Modified:
   branches/SAMBA_3_0/source/passdb/pdb_ldap.c
   trunk/source/passdb/pdb_ldap.c


Changeset:
Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c
===================================================================
--- branches/SAMBA_3_0/source/passdb/pdb_ldap.c	2006-03-29 13:31:30 UTC (rev 14755)
+++ branches/SAMBA_3_0/source/passdb/pdb_ldap.c	2006-03-29 14:52:03 UTC (rev 14756)
@@ -940,9 +940,16 @@
 	 * 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 @@
 		/* 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;

Modified: trunk/source/passdb/pdb_ldap.c
===================================================================
--- trunk/source/passdb/pdb_ldap.c	2006-03-29 13:31:30 UTC (rev 14755)
+++ trunk/source/passdb/pdb_ldap.c	2006-03-29 14:52:03 UTC (rev 14756)
@@ -940,9 +940,16 @@
 	 * 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 @@
 		/* 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;



More information about the samba-cvs mailing list