Bug#389183: (forw) [Pkg-shadow-devel] Re: pam_unix: in 'account' mode,
deny authorization if user's account is locked
Nicolas François
nicolas.francois at centraliens.net
Mon Sep 25 22:13:05 UTC 2006
On Mon, Sep 25, 2006 at 06:47:40AM +0200, bubulle at debian.org wrote:
> This suggestion comes from the Debian BTS and turns out to be "passwd
> -l/-u option should edit the shadow account expiry field *in addition*
> to editing the password field".
>
> Tomasz and other contributors to shadow, what's your opinion about it?
This sounds good to me.
I can't think of a situation where it would harm.
I'm attaching a patch.
Due to http://bugs.debian.org/308229 I set the accound expiry field to 1
rather than 0. This should be OK (Well, on a system without battery, the
date after a reboot could be 1970-01-01, and the account would not be
expired in that case).
Munging the password field is still necessary (at least on non shadowed
systems).
There is also another utility that can be used to expire an account,
without munging the password field: chage -E.
Kind Regards,
--
Nekral
-------------- next part --------------
Index: shadow-4.0.18.1/man/passwd.1.xml
===================================================================
--- shadow-4.0.18.1.orig/man/passwd.1.xml 2006-09-25 22:34:52.000000000 +0200
+++ shadow-4.0.18.1/man/passwd.1.xml 2006-09-25 22:46:28.000000000 +0200
@@ -214,7 +214,8 @@
<listitem>
<para>
Lock the named account. This option disables an account by changing
- the password to a value which matches no possible encrypted value.
+ the password to a value which matches no possible encrypted value,
+ and by setting the account expiry field to 1.
</para>
</listitem>
</varlistentry>
@@ -275,7 +276,8 @@
<para>
Unlock the named account. This option re-enables an account by
changing the password back to its previous value (to value before
- using <option>-l</option> option).
+ using <option>-l</option> option), and by resetting the account
+ expiry field.
</para>
</listitem>
</varlistentry>
Index: shadow-4.0.18.1/src/passwd.c
===================================================================
--- shadow-4.0.18.1.orig/src/passwd.c 2006-09-25 22:34:45.000000000 +0200
+++ shadow-4.0.18.1/src/passwd.c 2006-09-25 22:52:06.000000000 +0200
@@ -531,6 +531,16 @@
nsp->sp_inact = (inact * DAY) / SCALE;
if (do_update_age)
nsp->sp_lstchg = time ((time_t *) 0) / SCALE;
+ if (lflg)
+ {
+ /* Set the account expiry field to 1.
+ * Some PAM implementation consider zero as a non expired
+ * account.
+ */
+ nsp->sp_expire = 1;
+ }
+ if (uflg)
+ nsp->sp_expire = -1;
/*
* Force change on next login, like SunOS 4.x passwd -e or Solaris
More information about the Pkg-shadow-devel
mailing list