ユーザー管理コマンド
ユーザーは作れたのにログインできない、という詰まり方があります。Debian 系の useradd は既定でホームディレクトリを作らないからです。もう1つの定番が、usermod -G で既存の所属を吹き飛ばす事故です。出題の中心はこの2つです。
useradd は -m を付けないとホームが無い
| オプション | 意味 |
|---|---|
-m | ホームディレクトリを作成する |
-d <path> | ホームディレクトリのパスを指定する。-M なら作らない |
-s <shell> | ログインシェルを指定する |
-u <UID> | UID を指定する |
-g <group> | プライマリグループを指定する |
-G <g1,g2> | 補助グループをカンマ区切りで指定する |
-c <text> | コメント (GECOS) を設定する |
-e <YYYY-MM-DD> | アカウントの失効日を設定する |
-r | システムアカウントとして作成する |
-m を付けると /etc/skel の中身がホームディレクトリにコピーされます。.bashrc や .profile の雛形がここに置かれているので、新規ユーザーは最初からまともなシェル環境で始められます。雛形をまとめて変えたいときは /etc/skel を編集します。-r で作るシステムアカウントも、既定ではホームディレクトリを作りません。
Debian 系には adduser もあります。useradd を内部で呼ぶ対話的なスクリプトで、ホームの作成や /etc/skel の展開も既定でやります。人が手で1人作るときは便利ですが、試験で問われるのは useradd のほうです。
usermod -G は上書き、-aG は追加
| オプション | 意味 |
|---|---|
-aG <group> | 補助グループに追加する |
-G <g1,g2> | 補助グループを指定した内容で置き換える |
-L / -U | パスワードをロックする / 解除する |
-s <shell> | ログインシェルを変更する |
-d <path> -m | ホームディレクトリを変更し、中身を移動する |
-l <newname> | ログイン名を変更する |
-G だけを打つと、今まで所属していた補助グループがすべて消えて指定したものだけになります。sudo グループに入っていた管理者にこれをやると、その人は sudo を失います。既存を保ったまま足すなら必ず -a を併せます。-a は単独では使えず、-G とセットでのみ意味を持ちます。-L はハッシュの先頭に ! を付けてロックを実現し、-U はその ! を外します。
userdel は -r を付けないとホームが残る
userdel はアカウントだけを消します。-r を付けるとホームディレクトリとメールスプールも一緒に消えるので、消す前にそのホームに残すべきデータが無いかを確かめてください。付けなければホームは所有者不明のまま残ります。
グループ側は groupadd <名前> で作成、groupmod -n <新名> <旧名> で改名、groupmod -g <GID> <名前> で GID 変更、groupdel <名前> で削除です。あるユーザーのプライマリグループになっているグループは削除できません。
パスワードの期限は passwd と chage
| コマンド | 意味 |
|---|---|
passwd -l <user> | パスワードをロックする |
passwd -u <user> | ロックを解除する |
passwd -d <user> | パスワードを削除する。パスワード無しになる |
passwd -e <user> | 即座に期限切れにし、次回ログイン時に変更を強制する |
passwd -S <user> | パスワードの状態を1行で表示する |
chage は /etc/shadow の日付フィールドを扱う専用コマンドです。chage -l で現在の設定を一覧表示し、-M で最長日数、-m で最短日数、-W で警告日数、-E で失効日を設定します。
確認するときは id が UID と GID と所属グループをまとめて出します。id -u なら UID だけ、groups でも所属グループを見られます。
試験で狙われるところ
Debian 系の useradd は -m 無しでホームディレクトリを作りません。usermod -G は上書き、-aG は追加です。-a は -G と一緒でないと使えません。そして userdel は -r を付けないとホームディレクトリが残ります。