每天进步一点点:修改Linux普通用户的密码

最近打算重新玩bitshares,当年玩这个也写过一堆脚本,于是想着把这些脚本来过来快速复习一下,毕竟当年也下过一些功夫呢。

image.png
(图源 :pixabay)

然而好不容易想起这些脚本在哪个机器上,但是登录时却被提示密码不对,核对N次用户名并测试了N组密码之后,我确定,我确实忘记了这个账户的密码。

进入目录

不过这其实难不住我,反正我只是要拿到这组脚本,那么只要能把脚本拷贝出来就可以了。于是我在具有sudo权限的用户下使用如下命令登录了此账户,并进入对应目录中:

sudo su bitshares
cd

哈哈哈,账户对我已经不设防了,然后scp把脚本们copy到我当前的工作机器上,搞定收工。

修改普通用户密码

虽然用这样的方法拿到了脚本,但是难道就不能修改一下密码,方便我以后登录吗?

于是我在当前上述操作的基础上(已经登录到对应用户),执行如下指令:

passwd

我想我都已经登录到这个用户上了,就直接提示我设置新密码呗,然而结果让我失望:

Reveal spoiler

image.png

如图所示,依然要验证当前密码,而我有忘记了当前密码,所以无法设置成功。

这让我很是愤怒,明明我有root权限,还改不了密码了?真不信邪了。于是我回到具有sudo权限的用户下,使用如下指令:

sudo passwd bitshares

一如我所预料的样子,直接提示输入新密码,密码设置成功:

Reveal spoiler

image.png

然后测试使用对应用户名和密码登录一下,一切正常。所以,有root权限的情况下,搞定普通用户密码是超级easy的一件事情。

修改/etc/shadow

在搞定这事之后,我再想别人都是如何操作的呢?结果百度了一下发现都是使用修改/etc/shadow的方式。

大致操作步骤如下:

  • 登录root用户
  • 打开/etc/shadow文件
  • 清空对应用户的密码段并保存
  • passwd 用户名设置对应用户的密码

可是明明直接用步骤1、4就可以直接重置用户密码啊,那么2、3的意义是什么呢?

我想了想,可能是不同系统的实现方式不一样,有的系统在存在原密码的情况下必须校验原密码吧。只有把原密码清空才会略过对应步骤。

所以如果直接直接使用sudo passwd bitshares的方式不好用,那么就先清空/etc/shadow中对应内容吧。

以上操作仅限于忘记普通用户的密码,如果你忘记了root用户的密码或者没法获取root权限,那么上述操作并不适用。

忘记root密码也是可以解决的,不过限于篇幅就不在赘述了,另外我觉得我应该不会犯类似的错误,哈哈哈哈哈。