自动验证课堂练习的密码?

3 password shell-script hashsum raspberry-pi raspbian

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

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

我知道已经有一些关于自动登录的问题,但没有一个对我有用。我最接近解决方案的是让 su 命令说需要一个终端。使用“expect”是行不通的,因为它需要在学生的 Pis 上安装软件包。

如果还有其他方法可以验证密码是否正确,那么我愿意接受这些方法。由于盐的原因,我认为我无法进行散列密码比较。

Arc*_*mar 5

如果你有根:

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
Run Code Online (Sandbox Code Playgroud)
  • student当然用令人反感的字符串替换。
  • 也更换given-passwd。

有关更多详细信息,请参阅我的问题:/etc/shadow : how to generate $6$ 的加密密码?