diff --git a/amandad-src/amandad.c b/amandad-src/amandad.c
index d864c3f..4a899fb 100644
--- a/amandad-src/amandad.c
+++ b/amandad-src/amandad.c
@@ -456,7 +456,7 @@ main(
}
#ifndef SINGLE_USERID
- if (geteuid() == 0) {
+ if (getuid() == 0) {
if (strcasecmp(auth, "krb5") != 0) {
struct passwd *pwd;
/* lookup our local user name */
diff --git a/common-src/krb5-security.c b/common-src/krb5-security.c
index c3075fa..8d3b18a 100644
--- a/common-src/krb5-security.c
+++ b/common-src/krb5-security.c
@@ -334,6 +334,7 @@ krb5_accept(
char hostname[NI_MAXHOST];
int result;
char *errmsg = NULL;
+ struct passwd *pw;
krb5_init();
@@ -372,6 +373,12 @@ krb5_accept(
error("gss_server failed: %s\n", rc->errmsg);
rc->accept_fn = fn;
sec_tcp_conn_read(rc);
+
+ /* totally drop privileges at this point
+ *(making the userid equal to the dumpuser)
+ */
+ pw = getpwnam(CLIENT_LOGIN);
+ setreuid(pw->pw_uid, pw->pw_uid);
}
/*
@@ -712,7 +719,7 @@ krb5_init(void)
beenhere = 1;
#ifndef BROKEN_MEMORY_CCACHE
- putenv(stralloc("KRB5_ENV_CCNAME=MEMORY:amanda_ccache"));
+ putenv(stralloc(KRB5_ENV_CCNAME"=MEMORY:amanda_ccache"));
#else
/*
* MEMORY ccaches seem buggy and cause a lot of internal heap
@@ -727,7 +734,7 @@ krb5_init(void)
char *ccache;
ccache = malloc(128);
g_snprintf(ccache, SIZEOF(ccache),
- "KRB5_ENV_CCNAME=FILE:/tmp/amanda_ccache.%ld.%ld",
+ KRB5_ENV_CCNAME"=FILE:/tmp/amanda_ccache.%ld.%ld",
(long)geteuid(), (long)getpid());
putenv(ccache);
}