latest passdb checkins

Simo Sorce simo.sorce at polimi.it
Tue Nov 21 14:25:22 GMT 2000


Simo Sorce wrote:
> 
> Gerald Carter wrote:
> >
> > Folks,
> >
> > With the latest checkins of passdb changes to HEAD,
....


> Hi, when I created it I hit the problem the tdb has only one index.
                   ^^^^^^
ooppps rereading my message it may seem that I claim to have created
TDB, what I mean obviously is when I coded tdb_passdb :)


> We may change to GnuDBM or BerkeleyDBM (just reading the implementation,
> but which platforms we will cut using this DBs ?)
^^^^^^

maybe I am wrong, but at a first read I've seen that also Berkley DBM
use one key only to index data....

> , but I think a way to
> use TDB and act as it is a multi indexed database may be achieved!
> we really need to find data only in 3 ways:
> 1. search for username
> 2. search for rid
> 3. search for uid
> 
> We may implement an interface built this way:
> choose which search is more frequent and store the SAM_ACCOUNT structure
> with a key referencing that: If the searche by username is most frequent
> we store the SAM_ACCOUNT with USER_username key, if the search by RID is
> more frequent we store the SAM_ACCOUNT with RID_userrid.
> 
> Then we build 2 referencing key.
> 
> So USER_username is the entry that contains the SAM_ACCOUNT user
> structure, while RID_userrid and UID_useruid contains a string the point
> to USER_username:
> 
> for user simo, uid 500, rid 012345678 we have:
> USER_simo -> SAM_ACCOUNT
> UID_500 -> USER_simo
> RID_012345678 -> USER_simo

we may also think as a user serial number (maybe used also to generate
unique rids)
for user simo, uid 500, rid 012345678:
account number (in hex) 00100FA1

ACCOUNT_00100FA1 -> SAM_ACCOUNT
USER_simo -> ACCOUNT_00100FA1
UID_500 -> ACCOUNT_00100FA1
RID_012345678 -> USER_simo

this way there is never the possibility to have bad rids or uids to
point incorrect accounts, even if we delete and recreate a new user with
same name and for some reasons UID_* and RID_* does not get updated they
will point to deleted entries (ACCOUNT_* are uniq for db lifetime) and
so they will return an error (and be automatically deleted?)


> 
> what we need to take care is key consistency but, that not a big
> problem.
> If you think it is worth I would take the work to implement this idea!
> 



Simo Sorce - Integrazione Sistemi Unix/Windows - Politecnico di Milano
E-mail: simo.sorce at polimi.it
Tel.int: 02 2399 2425 - Fax.int. 02 2399 2451
-----------------------------------------------------------------
Be happy, use Linux!




More information about the samba-technical mailing list