約20台のLinuxサーバーでrootパスワードを変更したいのですが。主にCentOSとUbuntu。
それで、私はPuppet、chef、およびcfengineを見てきましたが、それらがそれを実行できるかどうか、またはそれらがタスクのために過剰に殺されるかどうかは本当にわかりませんか?
設定ファイルの編集方法に関する推奨事項はありますか、/etc/shadow
とりわけ、多くのLinuxサーバーで?
pssh あなたが探しているものかもしれません
コマンドusermod -p '_hash_' root
を実行するだけで済みます。ここで、hashは、そのシステムに適したパスワードのハッシュです。したがって、usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root
のようなコマンドは、rootにpassword
のパスワードを持たせます。
これを正しい方法で実行したい場合は、システムごとに固有のソルトと固有のハッシュも生成します。インストールされている場合は、この目的でmkpasswd
を使用できます。
$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/
PS個人的には、rootにパスワードを無効に設定してから、rootアカウントへのアクセスにsshキーベースの認証を使用することを好みます。ルートauthorized_keys
ファイルの更新を自動化するために、非常に簡単にスクリプトを作成できるはずです。 SSHログレベルによっては、rootアカウントへのアクセスに使用されたキーも表示されます。これは、誰かが何かを壊したのを追跡するのに役立つ場合があります。
あなたはしません。いいえ、/ etc/shadowを直接編集しないでください。 20台のサーバーの場合、おそらくログインして、passwdを使用してrootパスワードを変更します。
頻繁に行う必要がある場合にできることは、 Expect を使用して、次のようなループに入れることです。
for i in `cat <file_with_server_names>`
do
ssh <user>@$i
<expect stuff here>
done
使用していない薄っぺらな擬似コードで申し訳ありませんが、約6か月で期待できます。
rootはトリッキーなものです。個人的には、ネットワーク/サービスがダウンした場合のフォールバックプランとして、rootを外部サービスに結び付けるのは好きではありません。通常、私はLDAPまたはADの統合を提案していました(すでにADドメインを持っている場合!)
Puppetはユーザー(および他の多くのもの)を管理できます。 puppetを環境に統合する3台以上のサーバーを持つ管理者を温かくお勧めします。 puppetlabs.comのwikiには、すぐに立ち上げて実行するのに役立つ多くの記事があります。利点は間違いなくあなたの時間の価値があります。このコードを一度書くことを検討してください。
User {"sandra":
ensure => present,
group => ["sysadmin","dba"]
}
...そしてそれを与えられた時間枠内に多くのサーバーに適用しました。
そして、ええ、あなたのシャドウファイルを手で編集しないでください:)
Cluster-sshのようなパッケージもありますが、私の経験では、このタイプのソフトウェアを使用したワークフローは、3〜4台を超えるサーバーでは不快になります。これは、画面領域の観点からです。サーバーファイルシステムのレイアウトの違い(タブ補完など)、インストールされたパッケージなどが原因で発生するさまざまな問題についても話していません。
すべてのシステムに対してsshキー交換が確立されている場合は、各システムに対してsshを実行し、パスワードを更新するための基本的なループを検討します。そうでない場合は、各システムに個別にsshを実行し、パスワードを変更する方が理にかなっている場合があります。 20システムはそれほど多くはありません。
sshpass を見てください。キーがIPアドレスで、値が対応するパスワードである連想配列をループすることで、これを行うことができます。
パスワードは次の方法で変更できます。
passwd <<EOF
ch4ng#m3
ch4ng#m3
EOF
これを行った後、履歴をクリアする必要があります。