diff options
Diffstat (limited to 'source3/passdb')
-rw-r--r-- | source3/passdb/passdb.c | 7 | ||||
-rw-r--r-- | source3/passdb/pdb_get_set.c | 36 | ||||
-rw-r--r-- | source3/passdb/pdb_ldap.c | 62 |
3 files changed, 11 insertions, 94 deletions
diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index 6c84cccf79..6c84303947 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -152,11 +152,16 @@ NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd) return NT_STATUS_NO_SUCH_USER; } + /* Basic properties based upon the Unix account information */ + pdb_set_username(user, pwd->pw_name, PDB_SET); pdb_set_fullname(user, pwd->pw_gecos, PDB_SET); - pdb_set_unix_homedir(user, pwd->pw_dir, PDB_SET); pdb_set_domain (user, get_global_sam_name(), PDB_DEFAULT); + /* save the password structure for later use */ + + user->unix_pw = tcopy_passwd( user, pwd ); + /* Special case for the guest account which must have a RID of 501. By default the guest account is a member of of the domain users group as well as the domain guests group. Verified against diff --git a/source3/passdb/pdb_get_set.c b/source3/passdb/pdb_get_set.c index c39eb71162..92bc228e01 100644 --- a/source3/passdb/pdb_get_set.c +++ b/source3/passdb/pdb_get_set.c @@ -265,10 +265,10 @@ const char* pdb_get_homedir (const struct samu *sampass) const char* pdb_get_unix_homedir (const struct samu *sampass) { - if (sampass) - return (sampass->unix_home_dir); - else - return (NULL); + if ( sampass && sampass->unix_pw ) + return ( sampass->unix_pw->pw_dir ); + + return (NULL); } const char* pdb_get_dir_drive (const struct samu *sampass) @@ -830,34 +830,6 @@ BOOL pdb_set_homedir (struct samu *sampass, const char *home_dir, enum pdb_value } /********************************************************************* - Set the user's unix home directory. - ********************************************************************/ - -BOOL pdb_set_unix_homedir (struct samu *sampass, const char *unix_home_dir, enum pdb_value_state flag) -{ - if (!sampass) - return False; - - if (unix_home_dir) { - DEBUG(10, ("pdb_set_unix_homedir: setting home dir %s, was %s\n", unix_home_dir, - (sampass->unix_home_dir)?(sampass->unix_home_dir):"NULL")); - - sampass->unix_home_dir = talloc_strdup(sampass, - unix_home_dir); - - if (!sampass->unix_home_dir) { - DEBUG(0, ("pdb_set_unix_home_dir: talloc_strdup() failed!\n")); - return False; - } - - } else { - sampass->unix_home_dir = PDB_NOT_QUITE_NULL; - } - - return pdb_set_init_flags(sampass, PDB_UNIXHOMEDIR, flag); -} - -/********************************************************************* Set the user's account description. ********************************************************************/ diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index 3344b17888..89b958e915 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -441,67 +441,7 @@ static int ldapsam_delete_entry(struct ldapsam_privates *priv, return smbldap_modify(priv->smbldap_state, dn, mods); } -/* New Interface is being implemented here */ - -#if 0 /* JERRY - not uesed anymore */ - -/********************************************************************** -Initialize struct samu from an LDAP query (unix attributes only) -*********************************************************************/ -static BOOL get_unix_attributes (struct ldapsam_privates *ldap_state, - struct samu * sampass, - LDAPMessage * entry, - gid_t *gid) -{ - pstring homedir; - pstring temp; - char **ldap_values; - char **values; - - if ((ldap_values = ldap_get_values (ldap_state->smbldap_state->ldap_struct, entry, "objectClass")) == NULL) { - DEBUG (1, ("get_unix_attributes: no objectClass! \n")); - return False; - } - - for (values=ldap_values;*values;values++) { - if (strequal(*values, LDAP_OBJ_POSIXACCOUNT )) { - break; - } - } - - if (!*values) { /*end of array, no posixAccount */ - DEBUG(10, ("user does not have %s attributes\n", LDAP_OBJ_POSIXACCOUNT)); - ldap_value_free(ldap_values); - return False; - } - ldap_value_free(ldap_values); - - if ( !smbldap_get_single_pstring(ldap_state->smbldap_state->ldap_struct, entry, - get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_UNIX_HOME), homedir) ) - { - return False; - } - - if ( !smbldap_get_single_pstring(ldap_state->smbldap_state->ldap_struct, entry, - get_userattr_key2string(ldap_state->schema_ver, LDAP_ATTR_GIDNUMBER), temp) ) - { - return False; - } - - *gid = (gid_t)atol(temp); - - pdb_set_unix_homedir(sampass, homedir, PDB_SET); - - DEBUG(10, ("user has %s attributes\n", LDAP_OBJ_POSIXACCOUNT)); - - return True; -} - -#endif - -static time_t ldapsam_get_entry_timestamp( - struct ldapsam_privates *ldap_state, - LDAPMessage * entry) +static time_t ldapsam_get_entry_timestamp( struct ldapsam_privates *ldap_state, LDAPMessage * entry) { pstring temp; struct tm tm; |