diff options
author | wollman <wollman@FreeBSD.org> | 1997-04-29 17:46:27 +0000 |
---|---|---|
committer | wollman <wollman@FreeBSD.org> | 1997-04-29 17:46:27 +0000 |
commit | d226ef144b03696dab14ff5d54530d5632e71d16 (patch) | |
tree | ebc627df80aa6100a7cf763ecac36982be183b46 /sbin/dump/dumprmt.c | |
parent | 939a1f6d87a9bbf63fbf92964aa5a4d35038aaac (diff) | |
download | FreeBSD-src-d226ef144b03696dab14ff5d54530d5632e71d16.zip FreeBSD-src-d226ef144b03696dab14ff5d54530d5632e71d16.tar.gz |
Implement Kerberized rcmd for rdump/rrestore. This is lacking the
options one would normally expect to set the realm, enable encryption,
and whatnot, but this actually is able to contact the remote server,
so at least it's a start. (As a bonus, the stripped static binary is
unquestionably exportable.)
Diffstat (limited to 'sbin/dump/dumprmt.c')
-rw-r--r-- | sbin/dump/dumprmt.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/sbin/dump/dumprmt.c b/sbin/dump/dumprmt.c index 5959789..0be7866 100644 --- a/sbin/dump/dumprmt.c +++ b/sbin/dump/dumprmt.c @@ -83,9 +83,12 @@ static int rmtgetb __P((void)); static void rmtgetconn __P((void)); static void rmtgets __P((char *, int)); static int rmtreply __P((char *)); +#ifdef KERBEROS +int krcmd __P((char **, int /*u_short*/, char *, char *, int *, char *)); +#endif static int errfd = -1; - +extern int dokerberos; extern int ntrec; /* blocking factor on tape */ int @@ -147,9 +150,10 @@ rmtgetconn() int throughput; if (sp == NULL) { - sp = getservbyname("shell", "tcp"); + sp = getservbyname(dokerberos ? "kshell" : "shell", "tcp"); if (sp == NULL) { - msg("shell/tcp: unknown service\n"); + msg("%s/tcp: unknown service\n", + dokerberos ? "kshell" : "shell"); exit(X_ABORT); } pwd = getpwuid(getuid()); @@ -169,8 +173,14 @@ rmtgetconn() if ((rmt = getenv("RMT")) == NULL) rmt = _PATH_RMT; msg(""); - rmtape = rcmd(&rmtpeer, (u_short)sp->s_port, pwd->pw_name, tuser, - rmt, &errfd); +#ifdef KERBEROS + if (dokerberos) + rmtape = krcmd(&rmtpeer, sp->s_port, tuser, rmt, &errfd, + (char *)0); + else +#endif + rmtape = rcmd(&rmtpeer, (u_short)sp->s_port, pwd->pw_name, + tuser, rmt, &errfd); if (rmtape < 0) { msg("login to %s as %s failed.\n", rmtpeer, tuser); return; |