在执行如下命令后:
$ usermod -e <yesterday> -f <tomorrow> bea
Bea 的帐户将过期,但仍然有效(直到明天)。
有什么不同?什么是昨天可能发生而今天不可能发生的事情?什么是今天可能发生但明天之后就不会发生的事情?
答案1
usermod -e
通常采用日期作为参数:如果您指定usermod -e 2019-12-31 joeuser
,则 Joe 用户的帐户将仅在年底之前有效,并且不再有效,除非管理员通过设置新帐户到期日期或通过以下方式重新启用该帐户:用于usermod -e "" joeuser
允许帐户无限期启用,没有计划的到期时间。
您还可以使用usermod -e 1 joeuser
立即禁用帐户:这将有效地将帐户设置为 1970 年 1 月 2 日到期,这已经成为过去。
像这样禁用帐户适用于所有身份验证机制:即使用户使用 SSH 密钥、智能卡、RSA SecurID 或任何其他身份验证机制,该帐户也不会接受登录。当帐户像这样被禁用时,用户无法单独执行任何操作来重新启用它:唯一的办法是联系系统管理员。
请注意,这帐户到期完全独立于密码过期。
usermod -f
另一方面,期望天数作为参数。这是一个在用户密码过期时开始计时的时钟:例如,如果您将 Joe 用户的密码设置为在 90 天后过期 ( passwd -x 90 joeuser
) 和usermod -f 14 joeuser
,那么一旦距 Joe 用户上次更改密码已过去 90 天,Joe 将正好有 14 天的时间,如果他尝试登录,系统将强制他更改密码。如果他这样做,新密码将再次在 90 天内有效。
如果 Joe 在这 14 天内未登录,该帐户将被锁定,如果 Joe 仍需要访问系统,则需要联系管理员解锁帐户。
请注意,历史上passwd -l
用于表示锁定帐户;对于现代 Linux PAM 实现,它实际上意味着锁定仅密码。如果帐户配置了 SSH 密钥或其他一些身份验证方法,即使在passwd -l
.
当前推荐的完全禁用帐户而不删除帐户或更改其配置的方法(以便在需要时可以完全按照以前的方式重新启用帐户)usermod -e 1 <username>
。这保证对于新旧 PAM 实现同样有效。
将用户的 shell 更改为/bin/false
显示消息然后退出的命令也可以禁用任何身份验证方法的命令行登录,但副作用是有关用户当前 shell 的信息将丢失。此外,如果系统有其他服务(例如电子邮件或 FTP)使用系统密码进行身份验证,则更改 shell 可能不会禁用对它们的访问。
答案2
我不是 100% 确定,因为我现在无法测试,但如果我没记错的话,该-f
标志是/etc/shadow
.该字段是系统禁用帐户之前该帐户必须处于“非活动”状态(无人登录)的时间。切换-e
是账户的到期日。这两个字段不相关。