| diff -uNrp -x '*~' coreutils-5.97-orig/src/su.c coreutils-5.97/src/su.c |
| |
| |
| @@ -131,11 +131,15 @@ |
| |
| #include "error.h" |
| |
| -/* The official name of this program (e.g., no `g' prefix). */ |
| +/* The official name of this program (e.g., no `g' prefix). |
| + * - Add a "-l" to the name passed to PAM if this is a login simulation |
| + */ |
| #ifndef RUNUSER |
| #define PROGRAM_NAME "su" |
| +#define PROGRAM_NAME_L "su-l" |
| #else |
| #define PROGRAM_NAME "runuser" |
| +#define PROGRAM_NAME_L "runuser-l" |
| #endif |
| |
| #ifndef AUTHORS |
| @@ -310,7 +314,8 @@ correct_password (const struct passwd *p |
| #ifdef USE_PAM |
| struct passwd *caller; |
| char *tty_name, *ttyn; |
| - retval = pam_start(PROGRAM_NAME, pw->pw_name, &conv, &pamh); |
| + retval = pam_start(simulate_login ? PROGRAM_NAME_L : PROGRAM_NAME, |
| + pw->pw_name, &conv, &pamh); |
| PAM_BAIL_P; |
| |
| #ifndef RUNUSER |
| diff -urp coreutils-6.10-orig/doc/coreutils.info coreutils-6.10/doc/coreutils.info |
| |
| |
| @@ -11006,7 +11006,8 @@ options::. |
| set, even for the super-user, as described above), and set `PATH' |
| to a compiled-in default value. Change to USER's home directory. |
| Prepend `-' to the shell's name, intended to make it read its |
| - login startup file(s). |
| + login startup file(s). When this option is given, /etc/pam.d/su-l |
| + PAM file is used instead of the default one. |
| |
| `-m' |
| `-p' |
| diff -urp coreutils-6.10-orig/doc/coreutils.texi coreutils-6.10/doc/coreutils.texi |
| |
| |
| @@ -13670,7 +13670,9 @@ the exit status of @var{command} otherwi |
| |
| @command{su} allows one user to temporarily become another user. It runs a |
| command (often an interactive shell) with the real and effective user |
| -ID, group ID, and supplemental groups of a given @var{user}. Synopsis: |
| +ID, group ID, and supplemental groups of a given @var{user}. When the -l |
| +option is given, the su-l PAM file is used instead of the default su PAM file. |
| +Synopsis: |
| |
| @example |
| su [@var{option}]@dots{} [@var{user} [@var{arg}]@dots{}] |