SURS / map username
Luke Kenneth Casson Leighton
lkcl at samba-tng.org
Thu Mar 1 20:07:18 GMT 2001
On Thu, 1 Mar 2001, Elrond wrote:
>
> Okay...
>
> I get the impression, I'm missing something from the SURS /
> map username discussion.
>
> So I'm going to outline, how I currently see the future,
> and aftet that ask some specific questions.
>
> [I'm ignoring Groups completely, mapping uid to gid and the
> like is left as an excercise to the reader.
> main thing:
> - NT Names (DOM\name) are unique
across all inter-trusted domains, _including_ the names of the domains:
yep.
> - SIDs are unique
yep.
> - (type, id), where type is either "gid" or "uid", id is
> then either a uid or a gid, are the other "namespace".
okay. so it's type=[gu] and id=id, so in regular expression language,
(type, id) = [gu]id.
> ]
>
> Prerequisites:
>
> We have SAM in the way, NT has it.
yep.
> SURS is ONLY mapping between SIDS and (type, id)
... specifically, a SID could potentially simultaneously map to one and
only one uid [from one of the SURS tables] and one and only one gid [from
the other SURS table].
or it could just map to a gid. or it could map to just a uid.
but NOT, i repeat NOT, to multiple uids or to multiple gids.
> mapping between SIDs and NT Names is the job of
> lsarpc/samr
correct.
> mapping between (type, id) and unix names is the job of
> get{pw,gr}{nam,{u,g}id}
also correct.
>
> Assumptions (to make thinking easier):
>
> SURS is already properly filled, that is, all needed
> entries exist and it can be practicaly thought of as
> being read only
yep.
> None of the playing SAMs have aliases
>
> Groups are also completely ignored.
? ... okay.
>
> Okay, let's start:
>
>
> Samba TNG box trusting a remote Domain.
>
> I connect to the box as remotedomain\elrond, give my
> password.
>
> smbd feeds the request of to the local netlogond
>
> That forwards the request to the remote PDC, receives a
> nice NET_USER_INFO_3, with my SID in it.
>
> netlogond forwards that to smbd.
>
> smbd is happy and lets me in.
>
> smbd is about files, so it needs to act on the
> filesystem, for that it needs to know a uid to act as.
yep.
> smbd asks SURS with my SID and receives a ("uid", 1001).
this means that there is an entry in SURS with S-1-5-21-xxx-yyy-zzz-NNN
where S-1-5-21-xxx-yyy-zzz is remotedomain's SID and NNN is elrond's RID
_in_ remotedomain.
> smbd is happy, it expect a uid, because it feeded SURS
> with a "User"-SID.
yep.
> smbd does a setuid(1001).
>
> smbd is happy.
yep.
>
> Now the questions, actualy only one:
>
>
> Where does map username get its teeth in?
ah ha :)
okay.
let's say that you have this:
map username entry:
remotedomain\administrator=elrond
this is a perfectly valid thing to do in "map username".
hmmm... you've highlighted a possible problem.
what you _actually need to consider "map username" as is a mapping from
windows users to windows users.
i.e.:
map username entry:
remotedomain\administrator=remotedomain\elrond
then, whenever you get an SMB request for remotedomain\administrator, you
say, "hm, this is _actually_ remotedomain\elrond" and go from there (back
to "Okay, let's start:" above).
trying to treat the rhs of the map username equation as unix users?
yeeessss... i suppose you could do that.
you'd need to do this:
for (mapentry = get_first_map_username_entry(); mapentry = me->next; ..)
{
uid = getuid(mapentry->unixname);
SID = SURS_map_uid_to_SID(uid);
NTname = lsa_lookup_names(SID);
if NTname == mapentry->nt_name
return mapentry;
}
hey, can anyone tell i've been doing python for a long time now? :)
so, as you can see, this is going to be _horrendously_ expensive: that's
quite a lot of network traffic and work.
if you treat "map username" as windows-to-windows instead of
windows-to-unix, you bypass this expensive stage altogether [which i know
can be optimised by creating an array of SIDs to look up with
lsa_lookup_names, yeah yeah, but it's still horrible].
so, in the post earlier today when i was talking about using "map
username" to provide the many-to-one functionality that people keep
thinking ought to be in SURS, this is what i was referring to, and is
exactly why you _don't_ need it [many-to-one mappings in SURS].
luke
----- Luke Kenneth Casson Leighton <lkcl at samba-tng.org> -----
"i want a world of dreams, run by near-sighted visionaries"
"good. that's them sorted out. now, on _this_ world..."
More information about the samba-technical
mailing list