スクリプトでルートのAIXパスワードを確認する

スクリプトでルートのAIXパスワードを確認する

(AIX)のルートパスワードが正規化されたプレーンテキストパスワードと一致することを確認するために、シェルスクリプトでメソッドを探しています。このクエリは、このサイトの他のクエリと似ています。私はrootアクセス権を持っており、必要に応じてACプログラムをコンパイルできます。私はHP-UXとLinux用の標準ライブラリを探していました。今私はAIXで働いていますが、私が直面しているのはいくつかの障害物だけです。ソルトとハッシュを抽出でき、プレーンテキストのパスワードを知っています。塩とパスワードを入力してパスワードハッシュを取得して、サーバーに保存されているものと比較できるようにしたいと思います。

答え1

私はAIXに精通していません。専門的なツールがあるかもしれません。ただし、ツールをrootとして実行する必要があるかもしれません。

直接コーディングするよりも、既存のツールを使用する方が良いです。パスワードを渡してsu成功suしたかどうかをテストします。 rootとして実行する必要がありますsusuパスワードは端末から読み込まれるため、予想されるそれを通過します。

インスピレーションを受けて作ったスクリプトです。CluelessCoderがStack Overflowで同様の質問をしました。。このスクリプトは root ではなくユーザーとして実行する必要があります。そうしないと、suパスワードの入力を求められません。

#!/bin/sh
PASSWORD=swordfish

expect << EOF
spawn su -c exit
expect "Password:"
send "$PASSWORD\r"
set wait_result  [wait]

# check if it is an OS error or a return code from our command
#   index 2 should be -1 for OS erro, 0 for command return code
if {[lindex \$wait_result 2] == 0} {
        exit [lindex \$wait_result 3]
} 
else {
        exit 1 
}
EOF
if [ $? -eq 0 ]; then
  echo "The password is correct"
else
  echo "The password is wrong"
fi

Perl がある場合、または C プログラムを使用するには、次を参照してください。この同様の質問に対する答えLinuxでパスワードハッシュを抽出し、同じソルトを使用して提供されたパスワードのハッシュを計算する方法を示します。システムが既存のDESスキームを使用している場合は、ハッシュ抽出を調整する必要があるかもしれません。

関連情報