如何一步删除密码并锁定帐户?

信息安全 密码 linux
2021-08-19 02:08:57

我在远程机器上安装了一个最小的服务器,root 密码设置为临时但选择的值。

我添加了一个单独的管理员用户。此用户拥有 SSH 的授权密钥、无密码访问权限和无密码 sudo。

我想删除 root 密码的任何痕迹并锁定 root 用户。

这可以通过passwd -d root && passwd -l root. 但是,这会在两个操作之间为不良行为留下一个窗口。你怎么能一步完成这两个动作呢?

这更像是一个学术问题,而不是一个实际问题。我的解决方案是sed -e -i -e 's/^root:\([^:]*\)\(.*\)$/root:!!\2/' /etc/shadow,但感觉应该有一个不易出错的幂等操作。

2个回答

您可能想尝试:

usermod -p '!!' root

usermod使用-p参数将原始值设置为/etc/shadow文件中的加密密码。

此参数的传统用法是提供usermod已加密的密码,但它也接受'!!'将帐户标记为已锁定。

最后,此命令将删除当前密码,只留下感叹号,将 root 帐户设置为锁定passwd方式¹,使用安全且标准的命令一次性完成,从而满足请求。


¹:根据这个讨论,锁定帐户的方式没有既定标准。因此,在散列密码前usermod -L只使用一个感叹号 ( !) 来锁定它,而passwd -l使用两个 ( !!)。

要在一个命令中使用 passwd(1) 删除和锁定帐户,只需在同一个调用中同时指定-d和:-l

passwd -dl root