tamuraの日記: ユーザーの一括登録
昔の友人からメールが来た。
「Linuxを触らなきゃいけなくなったので教えてくれ」と。
# 最初の会社の同期で、くそったれなプロジェクトで一緒に
# 働いてた『戦友』ってやつだ。
で、Linux 上で、2000人分のユーザーを登録する必要があると。
状況が良く判らなかったので、きちんと説明できなかったけど
仕様を仮定してやってみることにする。
・ユーザー名の一覧のファイルがある。
・実際にログオンしたりはしないので、ホームディレクトリもシェル設定もいらない。
・所属グループは、みな同じグループで構わない。
・とりあえずのパスワードを設定して、本人に告知する予定である。
ということで書いたシェルスクリプト。
# 実際に運用とかしてる人には、当たり前のことなんだろうな
% cat -n userplus.sh
1 #!/bin/sh
2
3 USERLIST=dummy.csv
4 GROUP=testusers
5
6 while read uname
7
8 do
9 useradd $uname -s /bin/false -d /dev/null -g $GROUP
10 pass=`mkpasswd $uname`
11 echo $uname,$pass
12
13 done
10行目の、mkpasswd は、expect の自動パスワード生成・設定ツール。
# /etc/passwd と /etc/group の整合性をとる /usr/sbin/mkpasswd ではない。
# ちなみに、Kondara-2.0 には、/usr/bin/mkpasswd しかなかった。
# MiracleLinux には、逆に expect がインストールされておらず、/usr/sbin/mkpasswd のみ。
ただしセキュリティ的にはちょっと甘いらしい。
# 3万通りしかないから、総当たりでクラックされるとすぐバレる。;-)
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/186mkrdpasswd.html
11行目で標準出力へ出してるので、root で、
# sh userplus.sh > pass.txt するべし
画面で眺めたいなら、
# sh userplus.sh |tee pass.txt
登録したユーザーを削除したいならループしてるところで、userdel するスクリプトを作る。
もしユーザーに対するパスワードまで指定があるのならば、
newusers http://www.linux.or.jp/JM/html/shadow/man8/newusers.8.html
の方が適してるだろう。
# これは、Kondara/Miracleどちらもあった。
なお、mkpasswd が利用している expect の解説が
LinuxJpan誌の2002-3月号のマツダさんのコーナーに載っている。
ちなみに、ダミーデータ生成の Rubyスクリプト
%w(white black blue red yellow green pink silver gold).each do |c|
(1 .. 100).each do |n|
printf "%s%03d\n", c,n # user
# printf "%s%03d,%s\n", c,n,c # user,group
end
end
こんなのを作ってくれる。
white001
white002
white003
white004
white005
white006
white007
white008
white009
white010
ユーザーに対するグループの指定とかがあるとするとシェルスクリプトだとめんどくさいな。
ユーザーの一括登録 More ログイン