diff options
author | Karel Zak | 2018-05-23 16:32:32 +0200 |
---|---|---|
committer | Karel Zak | 2018-05-23 16:32:32 +0200 |
commit | bb3d3fd90558df51c383c53667d62a59f085bd31 (patch) | |
tree | 35d97d4caca96464f94292c7d9861c71fd8db803 /login-utils | |
parent | lslogins: fix password verification (diff) | |
download | kernel-qcow2-util-linux-bb3d3fd90558df51c383c53667d62a59f085bd31.tar.gz kernel-qcow2-util-linux-bb3d3fd90558df51c383c53667d62a59f085bd31.tar.xz kernel-qcow2-util-linux-bb3d3fd90558df51c383c53667d62a59f085bd31.zip |
lslogins: add PWD-METHOD column
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'login-utils')
-rw-r--r-- | login-utils/lslogins.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c index 2c770a72b..1a82393fe 100644 --- a/login-utils/lslogins.c +++ b/login-utils/lslogins.c @@ -115,6 +115,7 @@ struct lslogins_user { char *pwd_expire; char *pwd_ctime_min; char *pwd_ctime_max; + const char *pwd_method; char *last_login; char *last_tty; @@ -166,6 +167,7 @@ enum { COL_PWDLOCK, COL_PWDEMPTY, COL_PWDDENY, + COL_PWDMETHOD, COL_GROUP, COL_GID, COL_SGROUPS, @@ -219,6 +221,7 @@ static const struct lslogins_coldesc coldescs[] = [COL_PWDEMPTY] = { "PWD-EMPTY", N_("password not required"), N_("Password not required"), 1, SCOLS_FL_RIGHT }, [COL_PWDDENY] = { "PWD-DENY", N_("login by password disabled"), N_("Login by password disabled"), 1, SCOLS_FL_RIGHT }, [COL_PWDLOCK] = { "PWD-LOCK", N_("password defined, but locked"), N_("Password is locked"), 1, SCOLS_FL_RIGHT }, + [COL_PWDMETHOD] = { "PWD-METHOD", N_("password encryption method"), N_("Password encryption method"), 0.1 }, [COL_NOLOGIN] = { "NOLOGIN", N_("log in disabled by nologin(8) or pam_nologin(8)"), N_("No login"), 1, SCOLS_FL_RIGHT }, [COL_GROUP] = { "GROUP", N_("primary group name"), N_("Primary group"), 0.1 }, [COL_GID] = { "GID", N_("primary group ID"), "GID", 1, SCOLS_FL_RIGHT }, @@ -766,7 +769,6 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c } else user->pwd_deny = STATUS_UNKNOWN; break; - case COL_PWDLOCK: if (shadow) { if (*shadow->sp_pwdp == '!' && valid_pwd(shadow->sp_pwdp + 1)) @@ -774,6 +776,16 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c } else user->pwd_lock = STATUS_UNKNOWN; break; + case COL_PWDMETHOD: + if (shadow) { + const char *p = shadow->sp_pwdp; + + if (*p == '!' || *p == '*') + p++; + user->pwd_method = get_pwd_method(p, NULL, NULL); + } else + user->pwd_method = NULL; + break; case COL_NOLOGIN: if (strstr(pwd->pw_shell, "nologin")) user->nologin = 1; @@ -1065,6 +1077,9 @@ static void fill_table(const void *u, const VISIT which, const int depth __attri case COL_PWDDENY: rc = scols_line_set_data(ln, n, get_status(user->pwd_deny)); break; + case COL_PWDMETHOD: + rc = scols_line_set_data(ln, n, user->pwd_method); + break; case COL_GROUP: rc = scols_line_set_data(ln, n, user->group); break; |