*/
static char *logline;
extern int errorlineno;
-
+extern char *runas_user;
/*
* length of syslog-like header info used for mail and file logs
(void) sprintf(p, "gethostbyname() cannot find host %s ", host);
break;
- case SUDOERS_NO_OWNER:
- (void) sprintf(p, "no passwd entry for sudoers file owner (%s) ",
- SUDOERS_OWNER);
- break;
-
case SUDOERS_NOT_FILE:
(void) sprintf(p, "%s is not a regular file ", _PATH_SUDO_SUDOERS);
break;
case SUDOERS_WRONG_OWNER:
- (void) sprintf(p, "%s is not owned by %s ", _PATH_SUDO_SUDOERS,
- SUDOERS_OWNER);
+ (void) sprintf(p, "%s is not owned by uid %d and gid %d ",
+ _PATH_SUDO_SUDOERS, SUDOERS_UID, SUDOERS_GID);
break;
- case SUDOERS_RW_OTHER:
- (void) sprintf(p, "%s is readable or writeable by other than %s ",
- _PATH_SUDO_SUDOERS, SUDOERS_OWNER);
+ case SUDOERS_WRONG_MODE:
+ (void) sprintf(p, "%s is not mode %o ", _PATH_SUDO_SUDOERS,
+ SUDOERS_MODE);
break;
case SPOOF_ATTEMPT:
(void) fprintf(stderr,
"Sorry, user %s is not allowed to execute \"%s",
user_name, cmnd);
-
+
if (NewArgc > 1)
for (a = &NewArgv[1]; *a; a++) {
fputc(' ', stderr);
fputs(*a, stderr);
}
- (void) fprintf(stderr, "\" on %s.\n\n", host);
+ if (runas_user != NULL)
+ (void) fprintf(stderr, "\" as %s on %s.\n\n", runas_user, host);
+ else
+ (void) fprintf(stderr, "\" on %s.\n\n", host);
break;
case VALIDATE_ERROR:
TRIES_FOR_PASSWORD);
break;
- case SUDOERS_NO_OWNER:
- (void) fprintf(stderr,
- "No passwd entry for sudoers file owner (%s)\n", SUDOERS_OWNER);
- break;
-
case NO_SUDOERS_FILE:
switch (errno) {
case ENOENT:
break;
case SUDOERS_WRONG_OWNER:
- (void) fprintf(stderr, "%s is not owned by %s!\n",
- _PATH_SUDO_SUDOERS, SUDOERS_OWNER);
+ (void) fprintf(stderr, "%s is not owned by uid %d and gid %d!\n",
+ _PATH_SUDO_SUDOERS, SUDOERS_UID, SUDOERS_GID);
break;
- case SUDOERS_RW_OTHER:
- (void) fprintf(stderr,
- "%s is readable or writeable by other than %s!\n",
- _PATH_SUDO_SUDOERS, SUDOERS_OWNER);
+ case SUDOERS_WRONG_MODE:
+ (void) fprintf(stderr, "%s must be mode %o!\n", _PATH_SUDO_SUDOERS,
+ SUDOERS_MODE);
break;
case SPOOF_ATTEMPT:
* these will NOT send mail
*/
case VALIDATE_OK:
+ case VALIDATE_OK_NOPASS:
case PASSWORD_NOT_CORRECT:
case PASSWORDS_NOT_CORRECT:
/* case ALL_SYSTEMS_GO: this is the same as OK */