Linux有问必答:如何强制在下次登录Linux时更换密码

提问:我管理着一台多人共享的Linux服务器。我刚使用默认密码创建了一个新用户,但是我想用户在第一次登录时更换密码。有没有什么方法可以让他/她在下次登录时修改密码呢?

在多用户Linux环境中,标准实践是使用一个默认的随机密码创建一个用户账户。成功登录后,新用户自己改变默认密码。出于安全考虑,经常建议“强制”用户在第一次登录时修改密码来确保这个一次性使用的密码不会再被使用。

下面是如何强制用户在下次登录时修改他/她的密码。

每个Linux用户都关联这不同的密码相关配置和信息。比如,记录着上次密码更改的日期、最小/最大的修改密码的天数、密码何时过期等等。

一个叫chage的命令行工具可以访问并调整密码过期相关配置。你可以使用这个工具来强制用户在下次登录修改密码、

要查看特定用户的过期信息(比如:alice),运行下面的命令。注意的是除了你自己之外查看其他任何用户的密码信息都需要root权限。


  1. $ sudo chage -l alice

强制用户修改密码

如果你想要强制用户去修改他/她的密码,使用下面的命令。


  1. $ sudo chage -d0 <user-name>

原本“-d ”参数是用来设置密码的“年龄”(也就是上次修改密码起到1970/1/1起的天数)。因此“-d0”的意思是上次密码修改的时间是1970/1/1,这就让当前的密码过期了,也就强制让他在下次登录的时候修改密码了。

另外一个过期当前密码的方式是用passwd命令。


  1. $ sudo passwd -e <user-name>

上面的命令和“chage -d0”作用一样,让当前用户的密码立即过期。

现在检查用户的信息,你会发现:

当你再次登录时候,你会被要求修改密码。你会在修改前被要求再验证一次当前密码。

要设置更全面的密码策略(如密码复杂性,防止重复使用),则可以使用PAM。

本文来自合作伙伴“Linux中国”,原文发布日期:2015-10-26

时间: 2024-11-03 15:14:19

Linux有问必答:如何强制在下次登录Linux时更换密码的相关文章

Linux有问必答:如何用Perl检测Linux的发行版本

Linux有问必答:如何用Perl检测Linux的发行版本 提问:我需要写一个Perl程序,它会包含Linux发行版相关的代码.为此,Perl程序需要能够自动检测运行中的Linux的发行版(如Ubuntu.CentOS.Debian.Fedora等等),以及它是什么版本号.如何用Perl检测Linux的发行版本? 如果要用Perl脚本检测Linux的发行版,你可以使用一个名为Linux::Distribution的Perl模块.该模块通过检查/etc/lsb-release以及其他在/etc下的

Linux有问必答: 当使用代理服务器连接互联网时如何安装 Ubuntu 桌面版

提问: 我的电脑连接到的公司网络是使用HTTP代理连上互联网的.当我想使用CD-ROM安装Ubuntu时,安装在尝试获取文件时被停滞了,可能是由于代理的原因.然而问题是Ubuntu的安装程序从来没有在安装过程中提示我配置代理.我该怎样通过代理服务器安装Ubuntu桌面版? 不像Ubuntu服务器版,Ubuntu桌面版的安装非常自动化,没有留下太多的自定义空间,就像自定义磁盘分区,手动网络设置,包选择等等.虽然这种简单的,一键安装被认为是用户友好的,但却是那些寻找"高级安装模式"来定制自

Linux下强制新用户首次登录时修改密码

如果系统管理员希望添加一个用户以后,让该用户第一次登录以后自己设置自己的密码,那么就要使得用户的初始密码或者空密码立刻过期,强制用户第一次登录后立刻修改密码. 为了强制用户第一次登录时设置一个新密码,请按照下面的指示来做,但是需要的注意的时候如果用户是通过SSH远程登录进去的,那么该方法是不能生效的. 1. 锁定用户密码 - 如果用户不存在,用useradd添加用户,但是不设置密码,使得该帐号仍然处于锁定状态,如果用户密码已经激活,则用下面命令锁定: usermod -L username 2.

Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行

Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行 提问:我运行的是Ubuntu桌面,但是我希望启动后临时进入命令行.有什么简便的方法可以启动进入终端? Linux桌面自带了一个显示管理器(比如:GDM.KDM.LightDM),它们可以让计算机启动自动进入一个基于GUI的登录环境.然而,如果你要直接启动进入终端怎么办? 比如,你在排查桌面相关的问题或者想要运行一个不需要GUI的应用程序. 注意虽然你可以通过按下Ctrl+Alt+F1到F6临时从桌面GUI切换到虚拟终端.

Linux有问必答:如何在Linux上检查SSH的版本

Linux有问必答:如何在Linux上检查SSH的版本 Question:我想到SSH存在1和2两个版本(SSH1和SSH2).这两者之间有什么不同?还有我该怎么在Linux上检查SSH协议的版本? 安全Shell(SSH)通过加密的安全通信通道来远程登录或者远程执行命令.SSH被设计来替代不安全的明文协议,如telnet.rsh和rlogin.SSH提供了大量需要的特性,如认证.加密.数据完整性.授权和转发/通道. SSH1 vs. SSH2 SSH协议规范存在一些小版本的差异,但是有两个主要

Linux有问必答:如何修复“X11 forwarding request failed on channel 0”错误

Linux有问必答:如何修复"X11 forwarding request failed on channel 0"错误 问题: 当我尝试使用SSH的X11转发选项连接到远程主机时, 我在登录时遇到了一个 "X11 forwarding request failed on channel 0" (X11 转发请求在通道0上失败)的错误. 我为什么会遇到这个错误,并且该如何修复它? 首先,我们假设你已经正确启用了SSH的X11转发. 如果你在登录时遇到"X1

Linux有问必答:如何通过命令行创建和设置一个MySQL用户

Linux有问必答:如何通过命令行创建和设置一个MySQL用户 问题:我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制.如何通过命令行的方式来创建并且设置一个MySQL用户呢? 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQL用户帐号都有许多与之相关连的属性,例如用户名.密码以及权限和资源限制."权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用许可.创

Linux有问必答:如何修复“sshd error: could not load host key”

Linux有问必答:如何修复"sshd error: could not load host key" 问题:当我尝试SSH到一台远程服务器时,SSH客户端登陆失败并提示"Connection closed by X.X.X.X".在SSH服务器那端,我看到这样的错误消息:"sshd error: could not load host key.".这发生了什么问题,我怎样才能修复该错误? 该SSH连接错误的详细症状如下. SSH客户端方面:当你

Linux有问必答:如何修复Chrome的&quot;Your profile could not be opened correctly&quot;

Linux有问必答:如何修复Chrome的"Your profile could not be opened correctly" 提问:当我在linux打开Google Chrome 浏览器时,我已经几次收到弹出窗口,提示我的配置文件没有被正确打开(Your profile could not be opened correctly.).每次我打开Chrome都要弹出来,我应该如何修复这个问题? 当你在你的Chrome上看见"Your profile could not b