If the error message is going to be ambiguous, try to give the user some clue by returning the last error reported by the OS. Index: krb5-1.6.3/src/clients/kinit/kinit.c =================================================================== --- krb5-1.6.3.orig/src/clients/kinit/kinit.c +++ krb5-1.6.3/src/clients/kinit/kinit.c @@ -35,6 +35,7 @@ #else #undef HAVE_KRB524 #endif +#include #include #include #include @@ -921,8 +922,14 @@ k5_kinit(opts, k5) code = krb5_cc_initialize(k5->ctx, k5->cc, k5->me); if (code) { - com_err(progname, code, "when initializing cache %s", - opts->k5_cache_name?opts->k5_cache_name:""); + if ((code == KRB5_CC_IO) && (errno != 0)) { + com_err(progname, code, "when initializing cache %s: %s", + opts->k5_cache_name?opts->k5_cache_name:"", + strerror(errno)); + } else { + com_err(progname, code, "when initializing cache %s", + opts->k5_cache_name?opts->k5_cache_name:""); + } goto cleanup; }