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:おそらくすべてのディストリビューション