#newusersコマンドについて
Linux上で新規ユーザを追加する際には、通常はuseraddコマンドや、あるいは対話的にユーザを作成することができるadduserコマンドを用います。
しかし、大量のユーザを同時に作成する際にはこれらのコマンドをバッチ処理するようなスクリプトを記述しなければならず、手間がかかります。そのような場合にはユーザの新規作成や情報更新をバッチ処理で行うためのコマンド newusersを使ったほうが容易です。
newusers はユーザ名と平文パスワードとの組を記したファイルを読み、 その情報をもとに既存のユーザ情報の変更や新規ユーザの作成を行う。 このファイルの書式は、 下記の点を除き標準的なパスワードファイル (passwd(5) 参照)と同じである。
Man page of NEWUSERS
newusersに読ませるファイルの形式は/etc/passwdの書式に近く、
ユーザ名:パスワード:ユーザID:グループID:フルネーム:ホームディレクトリ:ログインシェル
のようにユーザアカウントの様々な情報を":"で区切ったものです。
ユーザIDやグループIDが空欄となっている場合、それらは自動で設定されます。
実際に読み込ませるファイルの例を挙げればこのようになります。
foo:passwd1::::/home/foo:/bin/bash
hoo:passwd2::::/home/hoo:/bin/bash
...
ただし、useraddなどでは/etc/skelにあるホームディレクトリのひな形となるファイルを新規作成したホームディレクトリにコピーする機能があるのですが、それがnewusersではないため、それらのコピーが必要ならば他の方法で行う必要があります。
一括ユーザ作成コマンド、newusers - satakesatakeの日記 - nextstageoneグループ
また、newusersは特に指定されなければパスワードの暗号化に/etc/login.defsで指定されているENCRYPT_METHODを用います。この値によってパスワードを保存する際に用いられる暗号化形式が決まるのですが、制限がなければこれをSHA256またはSHA512に変更することを強く薦めます。
# DESとかだと、先頭8文字しか見なかったりします。
具体的な方法
例えば10個のアカウントを作るとなったときにどのようにするのがよいか、という一例です。
自分が行った作業のメモとして書いておきます。
1.表計算ソフトでアカウントのリストを作成する
ユーザ名 | パスワード | ユーザID | グループID | フルネーム | ホームディレクトリ | ログインシェル |
---|
上の表をコピーして表の一番上に貼り付けて、アカウントのリストを作成します。
パスワードは次で設定するため空欄にしておきます。
2.パスワードのリストを作成し貼り付ける
次に設定するパスワードのリストを作成します。
仮パスワードを設定し配布後に各自変更させるという方法を取ったため、ランダムなパスワードを設定しました。
pwgenコマンドを使用するのがお手軽でよいかと思います。
$ pwgen 8 10 -1 -B
aiKieju4
Jo7Ya9za
ooz4waD3
aatohXu4
Zahde7ee
pheQu3ae
ao4Thaim
aoPah7jo
Rei4ceiy
aiboh4iW
これをそのまま表に貼り付けます。
この表はアカウントを配布する際にも用いるため、慎重に保管し配布終了後速やかに削除しましょう。
3.CSVファイルで出力する
これをCSVファイルで出力し、一行目を削除し区切り文字を":"に変更すれば
すぐにnewusersで使える形式になります。
4.newusersコマンドを用いてユーザを追加する
使用したファイルにはパスワードが含まれているため取り扱いには注意しましょう。