パスワードを忘れた? アカウント作成
727511 journal

tamuraの日記: ユーザーの一括登録

日記 by 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

ユーザーに対するグループの指定とかがあるとするとシェルスクリプトだとめんどくさいな。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...