summaryrefslogtreecommitdiffstats
path: root/login-utils/login.c
diff options
context:
space:
mode:
authorKarel Zak2011-10-03 17:21:04 +0200
committerKarel Zak2011-10-26 23:17:17 +0200
commit516b00c4283fbc0880cf019bc7ff09e371175132 (patch)
tree72ba909b8b85447f7de4abe63f3a7ba7a1302e88 /login-utils/login.c
parentlogin: use xalloc.h (diff)
downloadkernel-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.c50
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();