ユーザーが特定のユーザーIDとパスワードを使用してログインできることを確認する

ユーザーが特定のユーザーIDとパスワードを使用してログインできることを確認する

私たちは300以上のAIXサーバーを持っています。私たちは、これらすべてのサーバーのユーザーのローカルIDを作成します。これで、ユーザーは自分の資格情報が有効であることを確認するためにすべてのサーバーに手動でログインする必要があります。したがって、ユーザーが特定のユーザーIDとパスワードを使用してログインできるかどうかを識別する方法/スクリプトはありますか? Googleを試してみましたが、結果はありません。この要件を助けてください。

ベストアンサー1

確認するには:与えられたパスワードをテストする方法は言いません。私は管理者がそのようなテストを送信するために他のユーザーのパスワードを知る必要があるとは思わない。ただし、ユーザーまたはパスワードを設定したことがないすべてのユーザーを見つけるのに役立ちます。

システム管理者(ルートとも呼ばれる)として、次のことを試すことができます。

#!/usr/bin/ksh
## pwdchkUser
# Author: Michael Felt and AIXTOOLS, 2016
# example program for checking a single username on a list of hosts
# check user on all hosts listed, line by line in test1.txt

user=$1
cat test1.txt | while read host; do
    ssh root@${host} "(/usr/bin/grep -p ${user}: /etc/security/passwd \
        | grep lastupdate 2>&1 >/dev/null \
        || print $user@host has never set a password)"
done

#!/usr/bin/ksh
## pwdchkUsers
# Author: Michael Felt and AIXTOOLS, 2016
# example program to find all users that have never set a password
# the 'test' is that the keyword 'lastupdate' is missing from the user entry 
# /etc/security/passwd stanza 

host=$1
print "On ${host} the following usernames are known, but have not changed their password"

ssh root@$host '/usr/bin/grep -vp lastupdate /etc/security/passwd \
    | egrep ":$" | cut -d: -f 1'

ps "google"スクリプトで見つかったすべてのエラーについては議論しません。残念ながら、「googleで取得しました」と述べたsshコマンドの構文エラーを認識しません。確かにSEを通してではありません!


あなたのソリューションは2つの部分で構成されています。 a)認証用のスクリプト(ユーザーとは異なるものが存在する必要があります - これはあなたの質問に従って提供されます) - 一度これがあればパート2 b)dsh(分散シェル)の設定​​と使用

どちらも準備ができたら使用できます。

dcp script /some/great/script # copy to all servers in dsh domain

ユーザーは次のものを使用できます。

dsh /some/great/script

複数のサーバーで並列にコマンドを実行する

注:コマンドを実行するサーバーを選択する方法はいくつかあります。たとえば、次のようになります。

dsh -n host1,host2,host7 /some/great/script

a) 部分の詳細を理解するのに役立つことはできませんが、情報が不十分です。この記事がb)の部分を理解するのに役立つことを願っています。http://www.rootvg.net/content/view/634/88/

ps 考慮すべきもう一つのことは、実行するコマンドです。ユーザーを作成できるため、ユーザーが表示できないことを確認できます。

grep ^$username:!: /etc/passwd

そして

/usr/bin/grep -p "flags = ADMCHG" /etc/security/passwd | grep -v password
username:
        flags = ADMCHG
        lastupdate = 1416221835

説明する: ^ユーザー名:*:パスワードがないためログインできないユーザーを示します。^ユーザー名:!:ユーザー/パスワード認証用のシャドウパスワードファイルにエントリがあることを示します(またはシャドウファイルにパスワードは必要ありません)。

/etc/security/password - シャドウファイルの場合ロゴ == ADMCHG、パスワードがありますが、システムを維持するには、ユーザーはパスワードを変更する必要があります。オペレーティングシステムの資格情報を使用し、パスワードを変更できない、または変更できない一部のプログラムは単に終了します。

おすすめ記事