mirror of
https://git.freebsd.org/ports.git
synced 2025-05-14 00:01:52 -04:00
47 lines
1.3 KiB
Text
47 lines
1.3 KiB
Text
Hello!
|
|
|
|
The tac_plus user guide says that when passwd(5) file is used for user
|
|
authentication, the expiry date checks against shell field of password file.
|
|
Maybe it is OK for custom passwd files, but not for system password file.
|
|
|
|
Here is a little patch below which allow the tacacs daemon check
|
|
the expiration dates against 'expire' field of FreeBSD's master.passwd file.
|
|
It is very useful for me, and may be useful for other FreeBSD&tacacs users.
|
|
|
|
With best regards,
|
|
Sergey Levov (serg@informika.ru)
|
|
|
|
------------------------------ cut here ---------------------------
|
|
|
|
--- pwlib.c.orig 2012-06-07 02:54:23.000000000 +0400
|
|
+++ pwlib.c 2013-04-13 13:26:17.000000000 +0400
|
|
@@ -303,7 +303,7 @@
|
|
struct passwd *pw;
|
|
char *exp_date;
|
|
char *cfg_passwd;
|
|
-#ifdef SHADOW_PASSWORDS
|
|
+#if defined(SHADOW_PASSWORDS) || defined(FREEBSD)
|
|
char buf[12];
|
|
#endif /* SHADOW_PASSWORDS */
|
|
|
|
@@ -325,7 +325,20 @@
|
|
return(0);
|
|
}
|
|
cfg_passwd = pw->pw_passwd;
|
|
+#ifdef FREEBSD
|
|
+ buf[0] = '\0';
|
|
+ if (pw->pw_expire > (time_t) 0)
|
|
+ {
|
|
+ long secs = pw->pw_expire;
|
|
+ char *p = ctime(&secs);
|
|
+ bcopy(p+4, buf, 7);
|
|
+ bcopy(p+20, buf+7, 4);
|
|
+ buf[11] = '\0';
|
|
+ }
|
|
+ exp_date = buf;
|
|
+#else
|
|
exp_date = pw->pw_shell;
|
|
+#endif
|
|
|
|
#ifdef SHADOW_PASSWORDS
|
|
if (STREQ(pw->pw_passwd, "x")) {
|