|
Tomáš Mráz |
762e40 |
Index: auth-pam.c
|
|
Tomáš Mráz |
762e40 |
===================================================================
|
|
Tomáš Mráz |
762e40 |
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/auth-pam.c,v
|
|
Tomáš Mráz |
762e40 |
retrieving revision 1.134
|
|
Tomáš Mráz |
762e40 |
diff -u -p -r1.134 auth-pam.c
|
|
Tomáš Mráz |
762e40 |
--- auth-pam.c 15 May 2006 07:22:33 -0000 1.134
|
|
Tomáš Mráz |
762e40 |
+++ auth-pam.c 22 May 2006 08:50:59 -0000
|
|
Tomáš Mráz |
762e40 |
@@ -573,15 +573,17 @@ static struct pam_conv store_conv = { ss
|
|
Tomáš Mráz |
762e40 |
void
|
|
Tomáš Mráz |
762e40 |
sshpam_cleanup(void)
|
|
Tomáš Mráz |
762e40 |
{
|
|
Tomáš Mráz |
762e40 |
- debug("PAM: cleanup");
|
|
Tomáš Mráz |
762e40 |
- if (sshpam_handle == NULL)
|
|
Tomáš Mráz |
762e40 |
+ if (sshpam_handle == NULL || (use_privsep && !mm_is_monitor()))
|
|
Tomáš Mráz |
762e40 |
return;
|
|
Tomáš Mráz |
762e40 |
+ debug("PAM: cleanup");
|
|
Tomáš Mráz |
762e40 |
pam_set_item(sshpam_handle, PAM_CONV, (const void *)&null_conv);
|
|
Tomáš Mráz |
762e40 |
if (sshpam_cred_established) {
|
|
Tomáš Mráz |
762e40 |
+ debug("PAM: deleting credentials");
|
|
Tomáš Mráz |
762e40 |
pam_setcred(sshpam_handle, PAM_DELETE_CRED);
|
|
Tomáš Mráz |
762e40 |
sshpam_cred_established = 0;
|
|
Tomáš Mráz |
762e40 |
}
|
|
Tomáš Mráz |
762e40 |
if (sshpam_session_open) {
|
|
Tomáš Mráz |
762e40 |
+ debug("PAM: closing session");
|
|
Tomáš Mráz |
762e40 |
pam_close_session(sshpam_handle, PAM_SILENT);
|
|
Tomáš Mráz |
762e40 |
sshpam_session_open = 0;
|
|
Tomáš Mráz |
762e40 |
}
|
|
Tomáš Mráz |
762e40 |
Index: monitor.c
|
|
Tomáš Mráz |
762e40 |
===================================================================
|
|
Tomáš Mráz |
762e40 |
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/monitor.c,v
|
|
Tomáš Mráz |
762e40 |
retrieving revision 1.104
|
|
Tomáš Mráz |
762e40 |
diff -u -p -r1.104 monitor.c
|
|
Tomáš Mráz |
762e40 |
--- monitor.c 21 May 2006 08:26:40 -0000 1.104
|
|
Tomáš Mráz |
762e40 |
+++ monitor.c 22 May 2006 08:37:58 -0000
|
|
Tomáš Mráz |
762e40 |
@@ -354,6 +354,10 @@ monitor_child_preauth(Authctxt *_authctx
|
|
Tomáš Mráz |
762e40 |
MONITOR_REQ_PAM_ACCOUNT, &m);
|
|
Tomáš Mráz |
762e40 |
authenticated = mm_answer_pam_account(pmonitor->m_sendfd, &m);
|
|
Tomáš Mráz |
762e40 |
buffer_free(&m);
|
|
Tomáš Mráz |
762e40 |
+ if (authenticated) {
|
|
Tomáš Mráz |
762e40 |
+ do_pam_session();
|
|
Tomáš Mráz |
762e40 |
+ do_pam_setcred(0);
|
|
Tomáš Mráz |
762e40 |
+ }
|
|
Tomáš Mráz |
762e40 |
}
|
|
Tomáš Mráz |
762e40 |
#endif
|
|
Tomáš Mráz |
762e40 |
}
|
|
Tomáš Mráz |
762e40 |
@@ -1531,6 +1535,11 @@ mm_answer_term(int sock, Buffer *req)
|
|
Tomáš Mráz |
762e40 |
/* The child is terminating */
|
|
Tomáš Mráz |
762e40 |
session_destroy_all(&mm_session_close);
|
|
Tomáš Mráz |
762e40 |
|
|
Tomáš Mráz |
762e40 |
+#ifdef USE_PAM
|
|
Tomáš Mráz |
762e40 |
+ if (options.use_pam)
|
|
Tomáš Mráz |
762e40 |
+ sshpam_cleanup();
|
|
Tomáš Mráz |
762e40 |
+#endif
|
|
Tomáš Mráz |
762e40 |
+
|
|
Tomáš Mráz |
762e40 |
while (waitpid(pmonitor->m_pid, &status, 0) == -1)
|
|
Tomáš Mráz |
762e40 |
if (errno != EINTR)
|
|
Tomáš Mráz |
762e40 |
exit(1);
|
|
Tomáš Mráz |
762e40 |
Index: session.c
|
|
Tomáš Mráz |
762e40 |
===================================================================
|
|
Tomáš Mráz |
762e40 |
RCS file: /usr/local/src/security/openssh/cvs/openssh_cvs/session.c,v
|
|
Tomáš Mráz |
762e40 |
retrieving revision 1.328
|
|
Tomáš Mráz |
762e40 |
diff -u -p -r1.328 session.c
|
|
Tomáš Mráz |
762e40 |
--- session.c 4 May 2006 06:24:34 -0000 1.328
|
|
Tomáš Mráz |
762e40 |
+++ session.c 22 May 2006 08:14:24 -0000
|
|
Tomáš Mráz |
762e40 |
@@ -541,7 +541,7 @@ do_exec_pty(Session *s, const char *comm
|
|
Tomáš Mráz |
762e40 |
ttyfd = s->ttyfd;
|
|
Tomáš Mráz |
762e40 |
|
|
Tomáš Mráz |
762e40 |
#if defined(USE_PAM)
|
|
Tomáš Mráz |
762e40 |
- if (options.use_pam) {
|
|
Tomáš Mráz |
762e40 |
+ if (options.use_pam && !use_privsep) {
|
|
Tomáš Mráz |
762e40 |
do_pam_set_tty(s->tty);
|
|
Tomáš Mráz |
762e40 |
if (!use_privsep)
|
|
Tomáš Mráz |
762e40 |
do_pam_setcred(1);
|
|
Tomáš Mráz |
762e40 |
@@ -1284,7 +1284,7 @@ do_setusercontext(struct passwd *pw)
|
|
Tomáš Mráz |
762e40 |
}
|
|
Tomáš Mráz |
762e40 |
#endif
|
|
Tomáš Mráz |
762e40 |
# ifdef USE_PAM
|
|
Tomáš Mráz |
762e40 |
- if (options.use_pam) {
|
|
Tomáš Mráz |
762e40 |
+ if (options.use_pam && !use_privsep) {
|
|
Tomáš Mráz |
762e40 |
do_pam_session();
|
|
Tomáš Mráz |
762e40 |
do_pam_setcred(0);
|
|
Tomáš Mráz |
762e40 |
}
|
|
Tomáš Mráz |
762e40 |
@@ -1326,7 +1326,7 @@ do_setusercontext(struct passwd *pw)
|
|
Tomáš Mráz |
762e40 |
* These will have been wiped by the above initgroups() call.
|
|
Tomáš Mráz |
762e40 |
* Reestablish them here.
|
|
Tomáš Mráz |
762e40 |
*/
|
|
Tomáš Mráz |
762e40 |
- if (options.use_pam) {
|
|
Tomáš Mráz |
762e40 |
+ if (options.use_pam && !use_privsep) {
|
|
Tomáš Mráz |
762e40 |
do_pam_session();
|
|
Tomáš Mráz |
762e40 |
do_pam_setcred(0);
|
|
Tomáš Mráz |
762e40 |
}
|