Log UID in nologin

Sometimes getlogin() may fail, e.g., in a chroot() environment or due to NSS
misconfiguration. Loggin UID allows for investigation and troubleshooting in
such situation.
This commit is contained in:
Vladimir Ivanov 2018-08-03 09:44:16 +08:00
parent 67ec1a5266
commit 4be18d3299

View File

@ -24,7 +24,6 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#include <config.h>
#ident "$Id$" #ident "$Id$"
@ -36,6 +35,7 @@
int main (void) int main (void)
{ {
const char *user, *tty; const char *user, *tty;
uid_t uid;
tty = ttyname (0); tty = ttyname (0);
if (NULL == tty) { if (NULL == tty) {
@ -45,8 +45,9 @@ int main (void)
if (NULL == user) { if (NULL == user) {
user = "UNKNOWN"; user = "UNKNOWN";
} }
uid = getuid (); /* getuid() is always successful */
openlog ("nologin", LOG_CONS, LOG_AUTH); openlog ("nologin", LOG_CONS, LOG_AUTH);
syslog (LOG_CRIT, "Attempted login by %s on %s", user, tty); syslog (LOG_CRIT, "Attempted login by %s (UID: %d) on %s", user, uid, tty);
closelog (); closelog ();
printf ("%s", "This account is currently not available.\n"); printf ("%s", "This account is currently not available.\n");