Shell-Script
自動驗證課堂練習的密碼?
我正在嘗試編寫一個 bash 腳本,除其他外,它將以使用者身份“登錄”(如果可能,最好使用 su),而無需與密碼提示進行互動,即自動輸入密碼。我只需要它執行一個命令,然後會話就可以結束了。
這是針對我正在教授的 Linux 入門課程的“自動檢查器”。學生有一個練習,他們在他們的 Raspberry Pi(執行 Raspbian)上創建具有特定密碼的使用者名,我希望這個腳本能夠自動驗證密碼是否正確。學生們在他們的 Pis 上執行“自動檢查器”,我驗證輸出,因此他們有機會在上交之前修復任何錯誤。由於這是使用虛擬密碼的課堂練習,這些密碼的安全性完全無關緊要。
我知道已經有一些關於自動登錄的問題,但沒有一個對我有用。我最接近解決方案的是讓 su 命令說需要終端。使用“expect”是行不通的,因為它需要在學生的 Pis 上安裝軟體包。
如果還有其他方法可以驗證密碼是否正確,那麼我願意接受。由於鹽,我認為我無法進行雜湊密碼比較。
如果你有根:
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
為令人愉悅的字元串。- 更換
given-passwd
為好。有關更多詳細資訊,請參閱我的問題:/etc/shadow:如何生成 $ 6 $ 的加密密碼?