* NEWS, src/login.c: Log in utmp / utmpx / wtmp also when PAM is

enabled. This is not done by pam_lastlog. This was broken on
	2011-07-23.
	* NEWS, libmisc/utmp.c: Do not log in wtmp when PAM is enabled.
	This is done by pam_lastlog.
This commit is contained in:
nekral-guest 2012-05-18 17:57:52 +00:00
parent f741583f1a
commit f243d4077d
4 changed files with 19 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2012-05-17 Nicolas François <nicolas.francois@centraliens.net>
* NEWS, src/login.c: Log in utmp / utmpx / wtmp also when PAM is
enabled. This is not done by pam_lastlog. This was broken on
2011-07-23.
* NEWS, libmisc/utmp.c: Do not log in wtmp when PAM is enabled.
This is done by pam_lastlog.
2012-05-17 Christian Perrier <bubulle@Êebian.org> 2012-05-17 Christian Perrier <bubulle@Êebian.org>
* man/po/fr.po: French translation of manpages completed * man/po/fr.po: French translation of manpages completed

4
NEWS
View File

@ -2,7 +2,9 @@ $Id$
shadow-4.1.5 -> shadow-4.1.5.1 UNRELEASED shadow-4.1.5 -> shadow-4.1.5.1 UNRELEASED
- login
* Log into utmp(x) when PAM is enabled, but do not log into wtmp.
This complete pam_lastlog which logs into wtmp and in into utmp(x).
shadow-4.1.4.3 -> shadow-4.1.5 2012-02-12 shadow-4.1.4.3 -> shadow-4.1.5 2012-02-12

View File

@ -129,6 +129,7 @@ static bool is_my_tty (const char *tty)
return ret; return ret;
} }
#ifndef USE_PAM
/* /*
* Some systems already have updwtmp() and possibly updwtmpx(). Others * Some systems already have updwtmp() and possibly updwtmpx(). Others
* don't, so we re-implement these functions if necessary. * don't, so we re-implement these functions if necessary.
@ -160,6 +161,7 @@ static void updwtmpx (const char *filename, const struct utmpx *utx)
} }
#endif /* ! HAVE_UPDWTMPX */ #endif /* ! HAVE_UPDWTMPX */
#endif /* ! USE_UTMPX */ #endif /* ! USE_UTMPX */
#endif /* ! USE_PAM */
/* /*
@ -313,7 +315,10 @@ int setutmp (struct utmp *ut)
} }
endutent (); endutent ();
#ifndef USE_PAM
/* This is done by pam_lastlog */
updwtmp (_WTMP_FILE, ut); updwtmp (_WTMP_FILE, ut);
#endif /* ! USE_PAM */
return err; return err;
} }
@ -446,7 +451,10 @@ int setutmpx (struct utmpx *utx)
} }
endutxent (); endutxent ();
#ifndef USE_PAM
/* This is done by pam_lastlog */
updwtmpx (_WTMP_FILE "x", utx); updwtmpx (_WTMP_FILE "x", utx);
#endif /* ! USE_PAM */
return err; return err;
} }

View File

@ -126,12 +126,10 @@ static void usage (void);
static void setup_tty (void); static void setup_tty (void);
static void process_flags (int argc, char *const *argv); static void process_flags (int argc, char *const *argv);
static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *user); static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *user);
#ifndef USE_PAM
static void update_utmp (const char *user, static void update_utmp (const char *user,
const char *tty, const char *tty,
const char *host, const char *host,
/*@null@*/const struct utmp *utent); /*@null@*/const struct utmp *utent);
#endif /* ! USE_PAM */
#ifndef USE_PAM #ifndef USE_PAM
static struct faillog faillog; static struct faillog faillog;
@ -473,7 +471,6 @@ static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *use
return failent_user; return failent_user;
} }
#ifndef USE_PAM
/* /*
* update_utmp - Update or create an utmp entry in utmp, wtmp, utmpw, and * update_utmp - Update or create an utmp entry in utmp, wtmp, utmpw, and
* wtmpx * wtmpx
@ -499,7 +496,6 @@ static void update_utmp (const char *user,
free (utx); free (utx);
#endif /* USE_UTMPX */ #endif /* USE_UTMPX */
} }
#endif /* ! USE_PAM */
/* /*
* login - create a new login session for a user * login - create a new login session for a user
@ -1215,13 +1211,11 @@ int main (int argc, char **argv)
} }
} }
#ifndef USE_PAM
/* /*
* The utmp entry needs to be updated to indicate the new status * The utmp entry needs to be updated to indicate the new status
* of the session, the new PID and SID. * of the session, the new PID and SID.
*/ */
update_utmp (username, tty, hostname, utent); update_utmp (username, tty, hostname, utent);
#endif /* ! USE_PAM */
/* The pwd and spwd entries for the user have been copied. /* The pwd and spwd entries for the user have been copied.
* *