与过去相比,安全技术已经取得了长足的进步,但到目前为止,密码仍然是保护数据最常用的工具之一。passwd命令允许我们在linux中修改用户密码,但是它不仅仅是用来修改密码,它还可以锁定(或解锁)用户,也可以让用户在下次登录时修改密码。passwd命令所做的修改将反映在文件/etc/passwd中。那么,Linux中的密码存储在哪里呢?它以加密形式存储在/etc/shadow文件中。下面我们介绍一下passwd命令的一些实际用法。1、修改自己的密码修改自己的账号密码,即当前登录用户的密码,只需要输入passwd命令,不带任何选项:passwd,输入passwd回车,系统会询问你输入当前密码,然后设置一个新密码,例如:$passwdChangingpasswordforgliu.(current)UNIXpassword:EnternewUNIXpassword:RetypenewUNIXpassword:passwd:passwordupdatedsuccessfully如果你输入当前密码(即旧密码)作为新密码,系统会抛出一条错误信息,提示密码未被更改,并再次提示您输入新密码。2.创建root密码许多Linux发行版默认不设置root密码,访问root用户的唯一途径是通过sudo或su命令。这样做的原因是如果设置了比较简单的root密码(比如123456abc),系统很容易被攻击。必须是sudo用户才能创建root密码:sudo输出如下:$sudopasswdroot[sudo]passwordforEnternewRetypenewpasswd:passwordupdatedsuccessfully正确合理的配置用户权限很重要,因为我们当然不想所有用户都可以更改root密码。3.修改其他用户的密码作为root用户,或者有sudo权限的用户,可以使用passwd命令修改其他用户的密码。sudopasswd因为你是管理员,正在重置密码,所以系统不会要求你输入旧密码:$passwdnobodyEnternewUNIXpassword:RetypenewUNIXpassword:retypenewUNIXpassword:passwd:passwordupdatedsuccessfully4、查看密码状态可以使用-S选项来检查用户密码的状态:sudopasswd-S下面是输出:$passwd-SnobodynobodyP07/26/20220999997-1我们把上面的输出放到一个tableforlaterAnalysisof:usernamestatuslastchangedateminimumperiodmaximumperiodwarningperiodinactivityperiodnobodyP07/26/20220999997-1首先看status(状态),各个选项解释如下:P:Usablepassword(可用密码)NP:NonePassword(无密码)L:Lockedpassword(锁定密码)然后,关于密码的有效期,使用了一些保留的特殊数字,用于设置密码规则的参数:9999:永不过期0:可以随时修改-1:其他信息项未激活,可见警告期为7天。但是由于禁用了不活动期并且设置了永不过期,因此没有警告。5、查看所有用户的密码状态作为管理员用户,可以查看系统所有账号的用户状态:sudo6,强制用户下次登录修改密码我们可以使用-e选项让用户密码过期立即,以便可以强制用户在下次登录时更改密码:sudopasswd-e强制密码过期,如下所示:$passwd-enobodypasswd:密码过期信息已更改。现在,我们再查看一下用户密码的状态:$passwd-SnobodynobodyP01/01/19700999997-1我们可以看到密码设置日期已经改为“1970年1月1日”,这个历史日期与Unix系统相关,它是一个“epoch”日期,这基本上意味着日期是Unix系统所见的第“0”天(32位数字)。这样就可以强制nobody用户的密码过期,用户下次登录时,系统会要求修改新密码。7、锁定或解锁用户账号passwd命令的-l选项可以让我们在Linux系统中锁定用户账号:sudopasswd-l?username>一旦我们锁定了用户账号,用户就不能再登录了。$passwd-lnobody1passwd:密码过期信息已更改。我们再查看一下用户的状态,如下:$passwd-Snobody1nobody1L07/26/20220999997-1可以看到状态码是L,代表locked。解锁用户也很容易,使用-u选项:$passwd-unobody1passwd:密码过期信息已更改。再次查看用户密码状态,可以发现状态已经变为P,即可用密码状态:#passwd-Snobody1nobody1P07/26/20220999997-18,删除用户密码即可使用-d选项删除一个帐户的密码,这样该帐户就不需要密码来访问系统。但是这并不安全,所以通常不会这样做。sudopasswd-d9,others我们可以使用-n选项强制用户在n天内更改密码。但是,这种手动操作既繁琐又耗时,所以一般情况下,我们将系统的密码策略配置为适用于所有用户账户。passwd的其他使用方法,可以使用-h选项获取帮助信息。