Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Sep 2013 09:51:35 +0200
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        Slawa Olhovchenkov <slw@zxy.spb.ru>
Cc:        freebsd-security@FreeBSD.org
Subject:   Re: OpenSSH, PAM and kerberos
Message-ID:  <867geywdfc.fsf@nine.des.no>
In-Reply-To: <20130902181754.GD3796@zxy.spb.ru> (Slawa Olhovchenkov's message of "Mon, 2 Sep 2013 22:17:54 %2B0400")
References:  <20130829004844.GA70584@zxy.spb.ru> <86d2ovy64p.fsf@nine.des.no> <20130830100926.GU3796@zxy.spb.ru> <20130830103009.GV3796@zxy.spb.ru> <86sixrwdcv.fsf@nine.des.no> <20130830131455.GW3796@zxy.spb.ru> <8661uj9lc6.fsf@nine.des.no> <20130902181754.GD3796@zxy.spb.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
Slawa Olhovchenkov <slw@zxy.spb.ru> writes:
> If in this scenario on step 4 insted fork do pthread_create we don't
> lost stored credentials and (I think) have full-synchronized thread
> (new thred only work by request from parent and only for short time).

It's not quite that simple.  When a service module calls a conversation
function, the event loop resumes until it receives an answer from the
client.  This is why PAM needs to run in a separate thread or process.
OpenSSH was not designed to be multi-threaded, and we can't be sure
there won't be conflicts.

Another problem is that libpam loads shared objects (the modules) when
it runs, which may result in conflicts as well - espcially with
pam_ssh(8).

The proper solution would be an identification and authentication daemon
with a well-designed RPC interface and mechanisms for transferring
environment variables, descriptors and credentials from the daemon to
the application (in this case, sshd).

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?867geywdfc.fsf>