adduserコマンドでは、1回の実行で1人のユーザーしか登録できません。大量のユーザーを一括登録するには「newusers」コマンドを利用します。newusersコマンドは、ファイルからユーザー登録情報を読み込んでユーザーを登録します。まずは/etc/passwdファイルと同じ形式で、ユーザー登録用のファイル(ここではファイル名を「useradd_20180720.txt」)を用意します。
例えば、次のようにです。
1 2 3 4 |
hanako:password1:::hanako USP,,03-1234-6789,090-5432-1098:/home/hanako:/bin/bash saburo:password2:::saburo USP,,03-1234-6789,090-5432-9876:/home/saburo:/bin/bash hanayo:password3:::hanayo USP,,03-1234-7890,090-1234-1098:/home/hanayo:/bin/bash shiro:password4:::shiro USP,,03-1234-5678,090-4321-0987:/home/shiro:/bin/bash |
UIDとGIDは省略すると、自動で付与されます。セキュリティのため、個々のユーザーのパスワードはそれぞれ別の文字列にしてください。なお、このファイルへは初回ログイン時のパスワードを直接書き込んでいるので、誰にも見られないように大切に保管してください。
ユーザー登録用のファイルを作成したら、そのファイルを配置した同じディレクトリー内で、次のシェルスクリプト(users_reg.sh)を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/bin/bash ##for文を正しく実行するために半角スペースを「#」に変換 users_info=$(cat $1 | tr ' ' '#') for user_info in ${users_info} do ##「#」を半角スペースに戻す user_reg=$(echo ${user_info} | tr '#' ' ') ##(ユーザー登録) echo ${user_reg} | newusers ##/etc/skel内のファイルをホームディレクトリーにコピー user_home=$(echo ${user_reg} | cut -d ":" -f 6) user_group=$(echo ${user_reg} | cut -d ":" -f 1) cp /etc/skel/.??* ${user_home} chown ${user_group}.${user_group} ${user_home}/.??* ##初回ログイン時にパスワードを変更させる設定 chage -d 0 ${user_group} echo "ユーザー登録完了:${user_group}" done |
シェルスクリプトに実行権限を与え、引数にユーザー登録用のファイルを指定して実行すれば、ユーザー登録用のファイルに書き込まれたすべてのユーザーが登録されます。
1 2 |
$ chmod +x users_reg.sh $ sudo ./users_reg.sh useradd_20180720.txt |