- (bal) Disable Privsep for Tru64 after pre-authentication due to issues

with SIA.  Also, clean up of tru64 support patch by Chris Adams
   <cmadams@hiwaay.net>
This commit is contained in:
Ben Lindstrom 2003-03-21 01:18:09 +00:00
parent a5a2648b81
commit c8c548d248
6 changed files with 29 additions and 36 deletions

View File

@ -10,6 +10,9 @@
- (bal) scp.c 'limit' conflicts with Cray. Rename to 'limitbw' - (bal) scp.c 'limit' conflicts with Cray. Rename to 'limitbw'
- (bal) Collection of Cray patches (bsd-cray.h fix for CRAYT3E and improved - (bal) Collection of Cray patches (bsd-cray.h fix for CRAYT3E and improved
guessing rules) guessing rules)
- (bal) Disable Privsep for Tru64 after pre-authentication due to issues
with SIA. Also, clean up of tru64 support patch by Chris Adams
<cmadams@hiwaay.net>
20030318 20030318
- (tim) [configure.ac openbsd-compat/bsd-misc.c openbsd-compat/bsd-misc.h] - (tim) [configure.ac openbsd-compat/bsd-misc.c openbsd-compat/bsd-misc.h]
@ -1235,4 +1238,4 @@
save auth method before monitor_reset_key_state(); bugzilla bug #284; save auth method before monitor_reset_key_state(); bugzilla bug #284;
ok provos@ ok provos@
$Id: ChangeLog,v 1.2636 2003/03/21 01:05:37 mouring Exp $ $Id: ChangeLog,v 1.2637 2003/03/21 01:18:09 mouring Exp $

View File

@ -43,6 +43,10 @@ It does not function on HP-UX with a trusted system
configuration. PAMAuthenticationViaKbdInt does not function with configuration. PAMAuthenticationViaKbdInt does not function with
privsep. privsep.
On Compaq Tru64 Unix, only the pre-authentication part of privsep is
supported. Post-authentication privsep is disabled automatically (so
you won't see the additional process mentioned below).
Note that for a normal interactive login with a shell, enabling privsep Note that for a normal interactive login with a shell, enabling privsep
will require 1 additional process per login session. will require 1 additional process per login session.
@ -58,4 +62,4 @@ process 1005 is the sshd process listening for new connections.
process 6917 is the privileged monitor process, 6919 is the user owned process 6917 is the privileged monitor process, 6919 is the user owned
sshd process and 6921 is the shell process. sshd process and 6921 is the shell process.
$Id: README.privsep,v 1.10 2002/06/26 00:43:57 stevesk Exp $ $Id: README.privsep,v 1.11 2003/03/21 01:18:09 mouring Exp $

View File

@ -45,27 +45,25 @@ extern ServerOptions options;
extern int saved_argc; extern int saved_argc;
extern char **saved_argv; extern char **saved_argv;
extern int errno;
int int
auth_sia_password(Authctxt *authctxt, char *pass) auth_sia_password(Authctxt *authctxt, char *pass)
{ {
int ret; int ret;
SIAENTITY *ent = NULL; SIAENTITY *ent = NULL;
const char *host; const char *host;
char *user = authctxt->user;
host = get_canonical_hostname(options.verify_reverse_mapping); host = get_canonical_hostname(options.verify_reverse_mapping);
if (pass[0] == '\0') if (!authctxt->user || !pass || pass[0] == '\0')
return(0); return(0);
if (sia_ses_init(&ent, saved_argc, saved_argv, host, user, NULL, 0, if (sia_ses_init(&ent, saved_argc, saved_argv, host, authctxt->user,
NULL) != SIASUCCESS) NULL, 0, NULL) != SIASUCCESS)
return(0); return(0);
if ((ret = sia_ses_authent(NULL, pass, ent)) != SIASUCCESS) { if ((ret = sia_ses_authent(NULL, pass, ent)) != SIASUCCESS) {
error("Couldn't authenticate %s from %s", user, host); error("Couldn't authenticate %s from %s", authctxt->user,
host);
if (ret & SIASTOP) if (ret & SIASTOP)
sia_ses_release(&ent); sia_ses_release(&ent);
return(0); return(0);
@ -77,48 +75,35 @@ auth_sia_password(Authctxt *authctxt, char *pass)
} }
void void
session_setup_sia(char *user, char *tty) session_setup_sia(struct passwd *pw, char *tty)
{ {
struct passwd *pw;
SIAENTITY *ent = NULL; SIAENTITY *ent = NULL;
const char *host; const char *host;
host = get_canonical_hostname (options.verify_reverse_mapping); host = get_canonical_hostname(options.verify_reverse_mapping);
if (sia_ses_init(&ent, saved_argc, saved_argv, host, user, tty, 0, if (sia_ses_init(&ent, saved_argc, saved_argv, host, pw->pw_name, tty,
NULL) != SIASUCCESS) { 0, NULL) != SIASUCCESS)
fatal("sia_ses_init failed"); fatal("sia_ses_init failed");
}
if ((pw = getpwnam(user)) == NULL) {
sia_ses_release(&ent);
fatal("getpwnam: no user: %s", user);
}
if (sia_make_entity_pwd(pw, ent) != SIASUCCESS) { if (sia_make_entity_pwd(pw, ent) != SIASUCCESS) {
sia_ses_release(&ent); sia_ses_release(&ent);
fatal("sia_make_entity_pwd failed"); fatal("sia_make_entity_pwd failed");
} }
ent->authtype = SIA_A_NONE; ent->authtype = SIA_A_NONE;
if (sia_ses_estab(sia_collect_trm, ent) != SIASUCCESS) { if (sia_ses_estab(sia_collect_trm, ent) != SIASUCCESS)
fatal("Couldn't establish session for %s from %s", user, fatal("Couldn't establish session for %s from %s",
pw->pw_name, host);
if (sia_ses_launch(sia_collect_trm, ent) != SIASUCCESS)
fatal("Couldn't launch session for %s from %s", pw->pw_name,
host); host);
}
if (setpriority(PRIO_PROCESS, 0, 0) == -1) {
sia_ses_release(&ent);
fatal("setpriority: %s", strerror (errno));
}
if (sia_ses_launch(sia_collect_trm, ent) != SIASUCCESS) {
fatal("Couldn't launch session for %s from %s", user, host);
}
sia_ses_release(&ent); sia_ses_release(&ent);
if (setreuid(geteuid(), geteuid()) < 0) { if (setreuid(geteuid(), geteuid()) < 0)
fatal("setreuid: %s", strerror(errno)); fatal("setreuid: %s", strerror(errno));
}
} }
#endif /* HAVE_OSF_SIA */ #endif /* HAVE_OSF_SIA */

View File

@ -27,6 +27,6 @@
#ifdef HAVE_OSF_SIA #ifdef HAVE_OSF_SIA
int auth_sia_password(Authctxt *authctxt, char *pass); int auth_sia_password(Authctxt *authctxt, char *pass);
void session_setup_sia(char *user, char *tty); void session_setup_sia(struct passwd *pw, char *tty);
#endif /* HAVE_OSF_SIA */ #endif /* HAVE_OSF_SIA */

View File

@ -1,4 +1,4 @@
# $Id: configure.ac,v 1.112 2003/03/21 00:34:34 mouring Exp $ # $Id: configure.ac,v 1.113 2003/03/21 01:18:09 mouring Exp $
AC_INIT AC_INIT
AC_CONFIG_SRCDIR([ssh.c]) AC_CONFIG_SRCDIR([ssh.c])
@ -331,6 +331,7 @@ mips-sony-bsd|mips-sony-newsos4)
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_OSF_SIA) AC_DEFINE(HAVE_OSF_SIA)
AC_DEFINE(DISABLE_LOGIN) AC_DEFINE(DISABLE_LOGIN)
AC_DEFINE(DISABLE_FD_PASSING)
LIBS="$LIBS -lsecurity -ldb -lm -laud" LIBS="$LIBS -lsecurity -ldb -lm -laud"
else else
AC_MSG_RESULT(no) AC_MSG_RESULT(no)

View File

@ -1321,7 +1321,7 @@ do_child(Session *s, const char *command)
*/ */
if (!options.use_login) { if (!options.use_login) {
#ifdef HAVE_OSF_SIA #ifdef HAVE_OSF_SIA
session_setup_sia(pw->pw_name, s->ttyfd == -1 ? NULL : s->tty); session_setup_sia(pw, s->ttyfd == -1 ? NULL : s->tty);
if (!check_quietlogin(s, command)) if (!check_quietlogin(s, command))
do_motd(); do_motd();
#else /* HAVE_OSF_SIA */ #else /* HAVE_OSF_SIA */