diff --git a/etc/login.defs b/etc/login.defs index eba4bde7..f235e1b4 100644 --- a/etc/login.defs +++ b/etc/login.defs @@ -31,6 +31,15 @@ LOG_OK_LOGINS no # LASTLOG_ENAB yes +# +# Limit the highest user ID number for which the lastlog entries should +# be updated. +# +# No LASTLOG_UID_MAX means that there is no user ID limit for writing +# lastlog entries. +# +#LASTLOG_UID_MAX + # # Enable checking and display of mailbox status upon login. # @@ -332,8 +341,8 @@ CHFN_RESTRICT rwh # If only one of the MIN or MAX values is set, then this value will be used. # If MIN > MAX, the highest value will be used. # -# SHA_CRYPT_MIN_ROUNDS 5000 -# SHA_CRYPT_MAX_ROUNDS 5000 +#SHA_CRYPT_MIN_ROUNDS 5000 +#SHA_CRYPT_MAX_ROUNDS 5000 # # List of groups to add to the user's supplementary group set diff --git a/man/chage.1.xml b/man/chage.1.xml index 6ec6e840..1e4cc539 100644 --- a/man/chage.1.xml +++ b/man/chage.1.xml @@ -131,6 +131,12 @@ Display help message and exit. + + , + + When printing dates, use YYYY-MM-DD format. + + ,  INACTIVE diff --git a/src/chage.c b/src/chage.c index 05d2349b..23622e24 100644 --- a/src/chage.c +++ b/src/chage.c @@ -70,6 +70,7 @@ const char *Prog; static bool dflg = false, /* set last password change date */ Eflg = false, /* set account expiration date */ + iflg = false, /* set iso8601 date formatting */ Iflg = false, /* set password inactive after expiration */ lflg = false, /* show account aging information */ mflg = false, /* set minimum number of days before password change */ @@ -149,6 +150,7 @@ static /*@noreturn@*/void usage (int status) (void) fputs (_(" -d, --lastday LAST_DAY set date of last password change to LAST_DAY\n"), usageout); (void) fputs (_(" -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE\n"), usageout); (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); + (void) fputs (_(" -i, --iso8601 use YYYY-MM-DD when printing dates\n"), usageout); (void) fputs (_(" -I, --inactive INACTIVE set password inactive after expiration\n" " to INACTIVE\n"), usageout); (void) fputs (_(" -l, --list show account aging information\n"), usageout); @@ -262,12 +264,20 @@ static void print_date (time_t date) #ifdef HAVE_STRFTIME struct tm *tp; char buf[80]; + char format[80]; + + if( iflg ) { + (void) snprintf (format, 80, "%%Y-%%m-%%d"); + } + else { + (void) snprintf (format, 80, "%%b %%d, %%Y"); + } tp = gmtime (&date); if (NULL == tp) { (void) printf ("time_t: %lu\n", (unsigned long)date); } else { - (void) strftime (buf, sizeof buf, "%b %d, %Y", tp); + (void) strftime (buf, sizeof buf, format, tp); (void) puts (buf); } #else @@ -395,10 +405,11 @@ static void process_flags (int argc, char **argv) {"maxdays", required_argument, NULL, 'M'}, {"root", required_argument, NULL, 'R'}, {"warndays", required_argument, NULL, 'W'}, + {"iso8601", no_argument, NULL, 'i'}, {NULL, 0, NULL, '\0'} }; - while ((c = getopt_long (argc, argv, "d:E:hI:lm:M:R:W:", + while ((c = getopt_long (argc, argv, "d:E:hiI:lm:M:R:W:", long_options, NULL)) != -1) { switch (c) { case 'd': @@ -424,6 +435,9 @@ static void process_flags (int argc, char **argv) case 'h': usage (E_SUCCESS); /*@notreached@*/break; + case 'i': + iflg = true; + break; case 'I': Iflg = true; if ( (getlong (optarg, &inactdays) == 0) diff --git a/src/useradd.c b/src/useradd.c index bdd7fe8c..94835e93 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -2449,9 +2449,9 @@ int main (int argc, char **argv) (uid_t)-1, user_id, (gid_t)-1, user_gid); } else { fprintf (stderr, - _("%s: warning: the home directory already exists.\n" - "Not copying any file from skel directory into it.\n"), - Prog); + _("%s: warning: the home directory %s already exists.\n" + "%s: Not copying any file from skel directory into it.\n"), + Prog, user_home, Prog); } } diff --git a/src/usermod.c b/src/usermod.c index c3718864..0ae50e34 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -1879,7 +1879,7 @@ static void update_lastlog (void) return; } - max_uid = (uid_t) getdef_ulong ("LASTLOG_MAX_UID", 0xFFFFFFFFUL); + max_uid = (uid_t) getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL); if (user_newid > max_uid) { /* do not touch lastlog for large uids */ return;