From: Lars Mueller Date: Thu, 1 Dec 2015 20:40:45 +0100 Subject: [PATCH] cover DIR krb5 ccache too Bugzilla: bso#11631 Index: source3/winbindd/winbindd_pam.c =================================================================== --- source3/winbindd/winbindd_pam.c.orig +++ source3/winbindd/winbindd_pam.c @@ -42,6 +42,7 @@ #include "auth/gensec/gensec.h" #include "librpc/crypto/gse_krb5.h" #include "lib/afs/afs_funcs.h" +#include #undef DBGC_CLASS #define DBGC_CLASS DBGC_WINBIND @@ -493,6 +494,23 @@ static const char *generate_krb5_ccache( gen_cc = talloc_asprintf( mem_ctx, "WRFILE:/tmp/krb5cc_%d", uid); } + if (strequal(type, "DIR")) { + char *run_user_dir = NULL; + int fd; + gen_cc = talloc_asprintf( + mem_ctx, "DIR:/run/user/%d/krb5cc", uid); + run_user_dir = talloc_asprintf( + mem_ctx, "/run/user/%d", uid); + fd = open(run_user_dir, O_DIRECTORY); + if (fd == -1) { + DEBUG(10, ("creating DIR: %s\n", run_user_dir)); + mkdir(run_user_dir, 0700); + chown(run_user_dir, uid, (gid_t)-1); + } else { + close(fd); + } + talloc_free(run_user_dir); + } if (strequal(type, "KEYRING")) { gen_cc = talloc_asprintf( mem_ctx, "KEYRING:persistent:%d", uid);