Linuxで大量のユーザを追加するとき〜newusersコマンド
サーバタグ使うのすごく久しぶり.
Unix/Linux*1では一気にユーザを追加するためのコマンドと一気にパスワードを変更するためのコマンドが用意されている.
newusers
まず,次のような書式で1行ごとに追加したいユーザ情報を記述したファイルを作成する(例えばuser_list.txt).
ユーザー名:パスワード:ユーザーID:グループID:本名:ホームディレクトリ:ログインシェル foo:foo0001:500:500::/home/foo:/bin/bash
ユーザIDやグループIDを空にすれば自動でセットしてくれる.
foo:foo0001::::/home/foo:/bin/bash
そして,以下のように実行すればユーザ追加とホームディレクトリの作成までやってくれる.
# newusers user_list.txt
ただし,useraddコマンドで一人ずつ追加するときとの違いが二つあり
- /etc/skelにある.bashrcなどの基本的なファイルがコピーされない
- パスワードがDES形式で保存される(8文字目まで有効)
一つ目は,みんながよく使う設定などを記述した.emacsや.bashrcファイルを/etc/skelに.emacsや.bashrc等のファイルを入れておくことで各ユーザが最初から使用できるようになるが,そのコピーがされないということ.
二つ目は,通常useraddでユーザを追加した時のパスワードが/etc/shadowファイルにMD5形式で保存されるのに対して,newusersで作成した場合はDESで暗号化されることに由来するものらしい.9文字以上のパスワードを指定しても9文字目以降は何を入れてもログインできてしまう.
二つ目の問題を解決するには
/etc/login.defs ファイルに以下の内容を追記すれば良い.
MD5_CRYPT_ENAB yes
chpasswd
複数のユーザのパスワードを一気に変更するコマンド.newusersコマンドと同様に/etc/login.defsを編集することでMD5形式で暗号化してくれる.逆にいえばデフォルトではパスワードの8文字目までしか有効にならない.
次のような書式でファイルを作成(例えばpassword.txt)
ユーザー名:パスワード foo:foo0001
でコマンドを実行.データの与え方がさっきとちょっと違う.
# chpasswd < password.txt
chpasswdのバグ?: さかなでブログ
Tips ユーザーとグループ編 1 (newusers/chpasswd) - Nature's Linux Tech Portal
*1:おそらくすべてのディストリビューションで