web-dev-qa-db-ja.com

教室での練習のためにパスワードを自動的に確認しますか?

私は、パスワードプロンプトを操作する必要なく、ユーザーとして(できればsuを使用して)ユーザーとして「ログイン」するbashスクリプトを作成しようとしています。つまり、パスワードを自動的に入力します。 1つのコマンドを実行するだけで、セッションを終了できます。

これは、私が教える入門のLinuxクラスの「自動チェッカー」用です。学生は、Raspberry Pi(Raspbianを実行)で特定のパスワードを使用してユーザー名を作成する演習を行っています。このスクリプトで、パスワードが正しいことを自動的に確認する必要があります。生徒はPiで「自動チェッカー」を実行し、出力を確認します。そのため、提出する前にエラーを修正する機会があります。これはダミーのパスワードを使用した教室での演習であるため、これらのパスワードのセキュリティはまったく関係ありません。

自動ログインに関する質問はすでにいくつかありますが、どれもうまくいきません。私が解決策に至った最も近いのは、ターミナルが必要であると言うsuコマンドを取得することです。 "expect"を使用しても、学生のPiにパッケージをインストールする必要があるため機能しません。

パスワードが正しいことを確認する他の方法がある場合、私はそれらを受け入れます。 saltのため、ハッシュ化されたパスワード比較を実行できないと思います。

3
tilper

ルートがある場合:

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 $の暗号化されたパスワードを生成する方法?

6
Archemar