From 21e107fd42eb953affac28239588458c6c0ee323 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 21 Oct 1998 21:11:16 +0000 Subject: the next dialog: user-groups. it's not very sensible what appears, but hey: it appears! (This used to be commit 399035098f212e976cc0000a215e0705ebe78c05) --- source3/passdb/ldap.c | 6 ++++++ source3/passdb/nispass.c | 6 ++++++ source3/passdb/passdb.c | 27 +++++++++++++++++++++++++++ source3/passdb/smbpass.c | 1 + 4 files changed, 40 insertions(+) (limited to 'source3/passdb') diff --git a/source3/passdb/ldap.c b/source3/passdb/ldap.c index 59b06d7e6f..b673b81683 100644 --- a/source3/passdb/ldap.c +++ b/source3/passdb/ldap.c @@ -930,6 +930,11 @@ static struct smb_passwd *getldappwuid(uid_t smb_userid) return pdb_sam_to_smb(iterate_getsam21pwuid(smb_userid)); } +static struct smb_passwd *getldappwrid(uint32 user_rid) +{ + return pdb_sam_to_smb(iterate_getsam21pwuid(pdb_user_rid_to_uid(user_rid))); +} + static struct smb_passwd *getldappwent(void *vp) { return pdb_sam_to_smb(getldap21pwent(vp)); @@ -973,6 +978,7 @@ static struct passdb_ops ldap_ops = setldappwpos, getldappwnam, getldappwuid, + getldappwrid, getldappwent, add_ldappwd_entry, mod_ldappwd_entry, diff --git a/source3/passdb/nispass.c b/source3/passdb/nispass.c index 32cf42f95b..e750fec1a1 100644 --- a/source3/passdb/nispass.c +++ b/source3/passdb/nispass.c @@ -626,6 +626,11 @@ static struct sam_passwd *getnisp21pwuid(uid_t smb_userid) return getnisp21pwrid(pdb_uid_to_user_rid(smb_userid)); } +static struct smb_passwd *getnisppwrid(uid_t user_rid) +{ + return pdb_sam_to_smb(getnisp21pwuid(pdb_user_rid_to_uid(user_rid))); +} + static struct smb_passwd *getnisppwuid(uid_t smb_userid) { return pdb_sam_to_smb(getnisp21pwuid(smb_userid)); @@ -653,6 +658,7 @@ static struct passdb_ops nispasswd_ops = { setnisppwpos, getnisppwnam, getnisppwuid, + getnisppwrid, getnisppwent, add_nisppwd_entry, mod_nisppwd_entry, diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index a4bb657e80..0cd2f6ef2e 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -84,6 +84,15 @@ BOOL initialize_password_db(void) * Functions that return/manipulate a struct smb_passwd. */ +/************************************************************************ + Utility function to search smb passwd by rid. +*************************************************************************/ + +struct smb_passwd *iterate_getsmbpwrid(uint32 user_rid) +{ + return iterate_getsmbpwuid(pdb_user_rid_to_uid(user_rid)); +} + /************************************************************************ Utility function to search smb passwd by uid. use this if your database does not have search facilities. @@ -222,6 +231,15 @@ struct smb_passwd *getsmbpwnam(char *name) return pdb_ops->getsmbpwnam(name); } +/************************************************************************ + Routine to search smb passwd by user rid. +*************************************************************************/ + +struct smb_passwd *getsmbpwrid(uint32 user_rid) +{ + return pdb_ops->getsmbpwrid(user_rid); +} + /************************************************************************ Routine to search smb passwd by uid. *************************************************************************/ @@ -962,6 +980,15 @@ Error was %s\n", sid_file, strerror(errno) )); return True; } +/******************************************************************* + converts UNIX uid to an NT User RID. + ********************************************************************/ + +uid_t pdb_user_rid_to_uid(uint32 user_rid) +{ + return (uid_t)(((user_rid & (~USER_RID_TYPE))- 1000)/RID_MULTIPLIER); +} + /******************************************************************* converts UNIX uid to an NT User RID. ********************************************************************/ diff --git a/source3/passdb/smbpass.c b/source3/passdb/smbpass.c index bde696290d..c8d817dc40 100644 --- a/source3/passdb/smbpass.c +++ b/source3/passdb/smbpass.c @@ -990,6 +990,7 @@ static struct passdb_ops file_ops = { setsmbfilepwpos, iterate_getsmbpwnam, /* In passdb.c */ iterate_getsmbpwuid, /* In passdb.c */ + iterate_getsmbpwrid, /* In passdb.c */ getsmbfilepwent, add_smbfilepwd_entry, mod_smbfilepwd_entry, -- cgit