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>