diff options
author | Karel Zak | 2011-10-03 17:21:04 +0200 |
---|---|---|
committer | Karel Zak | 2011-10-26 23:17:17 +0200 |
commit | 516b00c4283fbc0880cf019bc7ff09e371175132 (patch) | |
tree | 72ba909b8b85447f7de4abe63f3a7ba7a1302e88 /login-utils/login.c | |
parent | login: use xalloc.h (diff) | |
download | kernel-qcow2-util-linux-516b00c4283fbc0880cf019bc7ff09e371175132.tar.gz kernel-qcow2-util-linux-516b00c4283fbc0880cf019bc7ff09e371175132.tar.xz kernel-qcow2-util-linux-516b00c4283fbc0880cf019bc7ff09e371175132.zip |
login: log good logins refactoring
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'login-utils/login.c')
-rw-r--r-- | login-utils/login.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/login-utils/login.c b/login-utils/login.c index f77a2f986..0f60f1d2d 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -509,6 +509,30 @@ static void log_utmp(struct login_context *cxt) updwtmp(_PATH_WTMP, &ut); } +static void log_syslog(struct login_context *cxt) +{ + struct passwd *pwd = cxt->pwd; + + if (!strncmp(cxt->tty_name, "ttyS", 4)) + syslog(LOG_INFO, _("DIALUP AT %s BY %s"), + cxt->tty_name, pwd->pw_name); + + if (!pwd->pw_uid) { + if (cxt->hostname) + syslog(LOG_NOTICE, _("ROOT LOGIN ON %s FROM %s"), + cxt->tty_name, cxt->hostname); + else + syslog(LOG_NOTICE, _("ROOT LOGIN ON %s"), cxt->tty_name); + } else { + if (cxt->hostname) + syslog(LOG_INFO, _("LOGIN ON %s BY %s FROM %s"), + cxt->tty_name, pwd->pw_name, cxt->hostname); + else + syslog(LOG_INFO, _("LOGIN ON %s BY %s"), cxt->tty_name, + pwd->pw_name); + } +} + static struct passwd *get_passwd_entry(const char *username, char **pwdbuf, struct passwd *pwd) @@ -1140,7 +1164,6 @@ int main(int argc, char **argv) chown_tty(&cxt); - if (setgid(pwd->pw_gid) < 0 && pwd->pw_gid) { syslog(LOG_ALERT, _("setgid() failed")); exit(EXIT_FAILURE); @@ -1149,32 +1172,11 @@ int main(int argc, char **argv) if (*pwd->pw_shell == '\0') pwd->pw_shell = _PATH_BSHELL; - init_environ(&cxt); - + init_environ(&cxt); /* init $HOME, $TERM ... */ setproctitle("login", cxt.username); - if (!strncmp(cxt.tty_name, "ttyS", 4)) - syslog(LOG_INFO, _("DIALUP AT %s BY %s"), cxt.tty_name, - pwd->pw_name); - - /* allow tracking of good logins. - -steve philp (sphilp@mail.alliance.net) */ - - if (pwd->pw_uid == 0) { - if (cxt.hostname) - syslog(LOG_NOTICE, _("ROOT LOGIN ON %s FROM %s"), - cxt.tty_name, cxt.hostname); - else - syslog(LOG_NOTICE, _("ROOT LOGIN ON %s"), cxt.tty_name); - } else { - if (cxt.hostname) - syslog(LOG_INFO, _("LOGIN ON %s BY %s FROM %s"), - cxt.tty_name, pwd->pw_name, cxt.hostname); - else - syslog(LOG_INFO, _("LOGIN ON %s BY %s"), cxt.tty_name, - pwd->pw_name); - } + log_syslog(&cxt); if (!cxt.quiet) { motd(); |