- if klist -s 2>/dev/null; then
- # We already have a ticket cache. Renew it.
- kinit -R &>/dev/null
- else
- # Try to find an existing cache but only if we are using FILE: caches.
- default=$((unset KRB5CCNAME; klist 2>&1) | sed -n 's/.*FILE:\([^)]*\).*/\1/p')
- if [ ! -z "$default" ]; then
- # Check for bogus FILE: KRB5CCNAME.
- if [ ! -z "$KRB5CCNAME" -a "${KRB5CCNAME##*:}" = "$KRB5CCNAME" ]; then
- export KRB5CCNAME="FILE:$KRB5CCNAME"
- fi
+ if [ ! "$SUDO_UID" ]; then
+ if klist -s 2>/dev/null; then
+ # We already have a ticket cache. Renew it.
+ kinit -R &>/dev/null
+ else
+ # Try to find an existing cache but only if we are using FILE: caches.
+ default=$((unset KRB5CCNAME; klist 2>&1) | sed -n 's/.*FILE:\([^)]*\).*/\1/p')
+ if [ ! -z "$default" ]; then
+ # Check for Exceed onDemand stupidity.
+ if [ "$KRB5CCNAME" = "FILE:" ]; then
+ unset KRB5CCNAME
+ fi
+
+ # Check for bogus FILE: KRB5CCNAME.
+ if [ ! -z "$KRB5CCNAME" -a "${KRB5CCNAME##*:}" = "$KRB5CCNAME" ]; then
+ export KRB5CCNAME="FILE:$KRB5CCNAME"
+ fi
+
+ # Find the file.
+ ccname="${KRB5CCNAME##FILE:}"
+ if [ "$ccname" = "$KRB5CCNAME" ]; then
+ # Our cache isn't a file cache. Throw it away.
+ ccname="$default"
+ unset KRB5CCNAME
+ fi