Re: pam_krb5 and user logout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2002-01-29 at 15:11, Nicolas Williams wrote:
> On Tue, Jan 29, 2002 at 01:37:21PM -0500, Mike Gerdts wrote:
> > Of course, this has to have some cooperation from things that may want
> > to update the credential cache with something like:
> > 
> >     open(/tmp/newfile)
> >     write(newfile, data)
> >     close(newfile)
> >     rename(/tmp/newfile, /tmp/oldfile)
> 
> ...
> seteuid(user's uid);
> newfile=mktemp("/tmp/krb5cc_uid_XXXXXXXX");
> krb5_cc_default(...);
> krb5_cc_store_creds(...);
> link("/tmp/krb5cc_uid", newfile);
> ...
> 

As it is, this does not work.  mktemp() creates a new file.  The second
argument to link() must not exist, and as such link() would fail.  That
is just am implementation detail...  (Sorry, I've had recent contact
with someone from marketing.  It rubbed off.)

What really needs to happen is every time that krb5_cc_* access the cc,
it needs to update /tmp/krb5cc_uid.  Locking must be done on this file
to be sure that there are not multiple things trying to update it at the
same time.  Presumably this locking is already done.  Another type of
locking needs to be done around all the link() and unlink() calls to
guard against multiple login/logout events from stepping on each other.

> > Perhaps that last part is the deal breaker on this scheme.
> 
> Not really, though with default ccache names there's the threat of
> symlink races...

That is an inherent problem with Sun's requirement that for GSS-API to
work you need to have a consistent file name.  It would be nice if the
pam module could send a message to gssd saying "uid 500 is using
/tmp/krb5cc_500_ab8923fs".

Mike





[Index of Archives]     [Fedora Users]     [Kernel]     [Red Hat Install]     [Linux for the blind]     [Gimp]

  Powered by Linux