以前のサーバーで行ったように、新しいサーバーにも同じパスワードを設定する必要があることがよくあります。シャドウから手動でハッシュを貼り付けることもできますが、これを自動的に行う方法を学びたいと思います。
old machine A
new machine B
新しいコンピュータBにはAのユーザーがいますが、Aには存在しない他のユーザーもあります(シャドウは並べ替えられず、もちろんスキップできます)。
sed/awkで次のことを行う方法はありますか?
マシンAからハッシュを取得し、新しいマシンBにパスワードが設定されていない既存のユーザーを置き換えます。 (xxx:!:xxxx)
答え1
awk 'BEGIN{ OFS=FS=":" }
{
if (NR==FNR) {
pwd[$1]=$2
} else {
if ($2 ~ /^!/ && $1 in pwd) $2=pwd[$1]
print
}
}' shadowA shadowB
shadowA
最初のファイル()を処理するときに、ユーザー名でインデックス付けされた配列NR==FNR
にパスワードハッシュを保存します。pwd
shadowB
2番目のファイル(else
)が処理され、2番目のフィールドがa(または可能!
性があります)で始まり、ユーザー名がパスワードの配列()に表示されたら、2番目のフィールドの値を更新します。次に現在の行を印刷します。!
!!
$1 in pwd
shadowB