--- su.c.orig 2002-11-13 13:05:32.000000000 -0500 +++ su.c 2002-11-13 13:07:53.000000000 -0500 @@ -226,7 +226,7 @@ log_su (const struct passwd *pw, int suc const char *new_user, *old_user, *tty; # ifndef SYSLOG_NON_ROOT - if (pw->pw_uid) + if (pw->pw_uid != 18) return; # endif new_user = pw->pw_name; @@ -284,7 +284,7 @@ correct_password (const struct passwd *p #endif correct = pw->pw_passwd; - if (getuid () == 0 || correct == 0 || correct[0] == '\0') + if (getuid () == 18 || correct == 0 || correct[0] == '\0') return 1; unencrypted = getpass (_("Password:")); @@ -331,7 +331,7 @@ modify_environment (const struct passwd { xputenv (concat ("HOME", "=", pw->pw_dir)); xputenv (concat ("SHELL", "=", shell)); - if (pw->pw_uid) + if (pw->pw_uid != 18) { xputenv (concat ("USER", "=", pw->pw_name)); xputenv (concat ("LOGNAME", "=", pw->pw_name)); @@ -553,7 +553,7 @@ main (int argc, char **argv) if (shell == 0 && change_environment == 0) shell = getenv ("SHELL"); - if (shell != 0 && getuid () && restricted_shell (pw->pw_shell)) + if (shell != 0 && getuid () != 18 && restricted_shell (pw->pw_shell)) { /* The user being su'd to has a nonstandard shell, and so is probably a uucp account or has restricted access. Don't