Linux系统入门教程:如何强制在下次登录Linux时更换密码
提问:我管理着一台多人共享的Linux服务器。我刚使用默认密码创建了一个新用户,但是我想用户在第一次登录时更换密码。有没有什么方法可以让他/她在下次登录时修改密码呢?
在多用户Linux环境中,标准实践是使用一个默认的随机密码创建一个用户账户。成功登录后,新用户自己改变默认密码。出于安全考虑,经常建议“强制”用户在第一次登录时修改密码来确保这个一次性使用的密码不会再被使用。
下面是如何强制用户在下次登录时修改他/她的密码。
每个Linux用户都关联这不同的密码相关配置和信息。比如,记录着上次密码更改的日期、最小/最大的修改密码的天数、密码何时过期等等。
一个叫chage的命令行工具可以访问并调整密码过期相关配置。你可以使用这个工具来强制用户在下次登录修改密码、
要查看特定用户的过期信息(比如:alice),运行下面的命令。注意的是除了你自己之外查看其他任何用户的密码信息都需要root权限。
<span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> chage </span><span class="pun">-</span><span class="pln">l alice </span>
强制用户修改密码
如果你想要强制用户去修改他/她的密码,使用下面的命令。
<span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> chage </span><span class="pun">-</span><span class="pln">d0 </span><span class="pun"><</span><span class="pln">user</span><span class="pun">-</span><span class="pln">name</span><span class="pun">></span>
原本“-d ”参数是用来设置密码的“年龄”(也就是上次修改密码起到1970/1/1起的天数)。因此“-d0”的意思是上次密码修改的时间是1970/1/1,这就让当前的密码过期了,也就强制让他在下次登录的时候修改密码了。
另外一个过期当前密码的方式是用passwd命令。
<span class="pln">$ </span><span class="kwd">sudo</span><span class="kwd">passwd</span><span class="pun">-</span><span class="pln">e </span><span class="pun"><</span><span class="pln">user</span><span class="pun">-</span><span class="pln">name</span><span class="pun">></span>
上面的命令和“chage -d0”作用一样,让当前用户的密码立即过期。
现在检查用户的信息,你会发现:
当你再次登录时候,你会被要求修改密码。你会在修改前被要求再验证一次当前密码。
要设置更全面的密码策略(如密码复杂性,防止重复使用),则可以使用PAM。参见这篇文章了解更多详情。
via: http://ask.xmodulo.com/force-password-change-next-login-linux.html