うおの知識倉庫

ゆるーくアウトプットしてます。

CentOSで複数ユーザのパスワードを一括で変更する方法。

概要

CentOSで動くパスワード変更シェルスクリプトです。

動作確認できたバージョン

・CentOS7.4.1708

前準備

16行目あたりに対象としたいユーザ分、

username=("${username[@]}" "追加したいユーザ名")
userpass=("${userpass[@]}" "追加したいユーザの新しいパスワード")

のコードを追加する。

実行手順

$ su -で管理者ユーザになる。
# vi pwResetCentOS.shを実行し、下記のコードをコピペ、保存する。
# chmod +x pwResetCentOS.shで実行権限を与える。
# ./pwResetCentOS.shスクリプトを実行。
# rm pwResetCentOS.shスクリプトを削除。
パスワードが変更されていることを確認する。
※変更されていない場合はpasswdコマンドを使用し、自力でパスワードを変更する。

pwResetCentOS.shの内容

#!/bin/sh

# -*- coding: utf-8 -*-
# This code run for CentOS7
# Operation checked with CentOS Linux release 7.4.1708 (core)

#Create for array target users
username=()
userpass=()

# You can add target user here
# !!! Pay attention to password restrictions !!!
# e.g) username=("${username[@]}" "scott")
#      userpass=("${userpass[@]}" "tigertiger39")

username=("${username[@]}" "root")
userpass=("${userpass[@]}" "rootpassword")
username=("${username[@]}" "user1")
userpass=("${userpass[@]}" "tiger1")
username=("${username[@]}" "user2")
userpass=("${userpass[@]}" "tiger2")
username=("${username[@]}" "user3")
userpass=("${userpass[@]}" "tiger3")
username=("${username[@]}" "user4")
userpass=("${userpass[@]}" "tiger4")
username=("${username[@]}" "user5")
userpass=("${userpass[@]}" "tiger5")
username=("${username[@]}" "user6")
userpass=("${userpass[@]}" "tiger6")
username=("${username[@]}" "user7")
userpass=("${userpass[@]}" "tiger7")
username=("${username[@]}" "user8")
userpass=("${userpass[@]}" "tiger8")
username=("${username[@]}" "user9")
userpass=("${userpass[@]}" "tiger9")
username=("${username[@]}" "user10")
userpass=("${userpass[@]}" "tiger10")
username=("${username[@]}" "user11")
userpass=("${userpass[@]}" "tiger11")


#Password change loop
for((i=0;i<${#username[@]};i++))
do
    echo ${userpass[$i]} | passwd --stdin ${username[$i]}
    echo ${username[$i]} finish!!
done

echo "Password change all finish!!"

所感

シェルスク1つにまとめるよりもファイルを読み込んで使用した方がスマートな気もする。 一時的に使いたいだけならこの方法でもいいかも