summaryrefslogtreecommitdiffstats
path: root/sbin/dump/dumprmt.c
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1997-04-29 17:46:27 +0000
committerwollman <wollman@FreeBSD.org>1997-04-29 17:46:27 +0000
commitd226ef144b03696dab14ff5d54530d5632e71d16 (patch)
treeebc627df80aa6100a7cf763ecac36982be183b46 /sbin/dump/dumprmt.c
parent939a1f6d87a9bbf63fbf92964aa5a4d35038aaac (diff)
downloadFreeBSD-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.c20
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;
OpenPOWER on IntegriCloud