自动验证课堂练习密码?

自动验证课堂练习密码?

我正在尝试编写一个 bash 脚本,除其他外,该脚本将以用户身份“登录”(如果可能的话最好使用 su),而无需与密码提示交互,即自动输入密码。我只需要它执行一个命令,然后会话就可以结束。

这是我正在教授的 Linux 入门课程的“自动检查器”。学生们进行了一个练习,他们在 Raspberry Pi(运行 Raspbian)上创建具有特定密码的用户名,我希望此脚本能够自动验证密码是否正确。学生们在他们的 Pi 上运行“自动检查器”,我验证输出,这样他们就有机会在上交之前修复任何错误。由于这是使用虚拟密码的课堂练习,因此这些密码的安全性完全无关。

我知道已经有一些关于自动登录的问题,但它们都不适合我。我最接近的解决方案是让 su 命令说需要终端。使用“expect”将不起作用,因为它需要在学生的 Pi 上安装软件包。

如果有其他方法来验证密码是否正确,那么我愿意接受。由于盐的原因,我认为我无法进行哈希密码比较。

答案1

如果你有根:

salt=$(awk -F\$ '$1 ~ /student:/ { print $3 }' /etc/shadow)
hashedpasswd=$(awk -F: '$1 == "student" { print $2} ' /etc/shadow)
expected=$(mkpasswd -m sha-512 given-passwd $salt)
if [ "$hashedpasswd" = "expected" ]
then
   echo good
else
   echo bad
fi
  • student当然用revellant字符串替换。
  • given-passwd也更换。

请参阅我的问题了解更多详细信息:/etc/shadow : 如何生成 $6$ 的加密密码?

相关内容