こんにちは、インフラエンジニアのryuです。
LPIC-1の102試験の勉強をしていると、ユーザーとグループの管理で点を落とす人がけっこういます。useradd は知っているのに、/etc/shadow の何番目の項目が何を表すのか、と聞かれると答えに詰まるパターンです。
この分野は、コマンドのオプションと設定ファイルの項目がセットで問われます。どちらか片方だけ覚えても、選択肢を見たときに迷ってしまいます。
この記事では、ユーザー・グループ管理で押さえておきたいファイルとコマンドを整理したあと、オリジナルの練習問題を8問用意しました。手元のLinuxで確かめるコマンドも載せているので、読むだけでなく打ちながら進めてみてください。
LPIC-1のどの範囲に入る?¶
ユーザーとグループの管理は、LPIC-1の102試験(102-500)の主題 107.1「ユーザーアカウントとグループアカウント、および関連するシステムファイルの管理」に入っています。
LPIの学習教材(LPI Learning)では、この主題で扱うファイルとコマンドとして、次のようなものが挙げられています。
| 種類 | 主なもの |
|---|---|
| ファイル | /etc/passwd・/etc/shadow・/etc/group・/etc/skel/ |
| ユーザーのコマンド | useradd・usermod・userdel・passwd・chage |
| グループのコマンド | groupadd・groupmod・groupdel |
| 情報の確認 | getent・id |
LPIC-1全体の勉強の進め方は、LPICの勉強方法の記事にまとめています。この記事では、107.1 の中身に絞って見ていきます。
まずは3つのファイルの項目を読めるようにする¶
ユーザー管理の問題は、ファイルの1行を見せて「この項目は何か」と聞く形がよく見られます。コマンドを覚える前に、3つのファイルの並び方を頭に入れておきましょう。
/etc/passwdの7つの項目¶
/etc/passwd は1行が1ユーザーで、: で区切られた7つの項目が並んでいます。例えば、次のような行です。
taro:x:1001:1001:Taro Yamada:/home/taro:/bin/bash
左から順に、項目の意味は次のとおりです。
| 番号 | 例 | 意味 |
|---|---|---|
| 1 | taro |
ユーザー名 |
| 2 | x |
パスワード。x は /etc/shadow に入っているという意味 |
| 3 | 1001 |
ユーザーID(UID) |
| 4 | 1001 |
主グループのID(GID) |
| 5 | Taro Yamada |
コメント(GECOS)。氏名などを書く |
| 6 | /home/taro |
ホームディレクトリ |
| 7 | /bin/bash |
ログインシェル |
2番目が x になっているのは、パスワードのハッシュを誰でも読める /etc/passwd に置かないためです。UID の 0 は root で、一般ユーザーの UID が何番から始まるかは /etc/login.defs の UID_MIN で決まります。
ユーザーの一覧の見方は、ユーザーを一覧で表示する方法の記事でも解説しています。
/etc/shadowの9つの項目¶
パスワードのハッシュと、その有効期限の情報は /etc/shadow に入っています。こちらは9つの項目です。
| 番号 | 意味 |
|---|---|
| 1 | ユーザー名 |
| 2 | パスワードのハッシュ |
| 3 | 最後にパスワードを変えた日(1970年1月1日からの日数) |
| 4 | 次に変更できるようになるまでの最小日数 |
| 5 | パスワードの有効期限(最大日数) |
| 6 | 期限切れの何日前から警告するか |
| 7 | 期限が切れてからアカウントが使えなくなるまでの日数 |
| 8 | アカウントの有効期限(1970年1月1日からの日数) |
| 9 | 予約(使われていない) |
2番目の先頭に ! が付いていると、そのパスワードではログインできない状態(ロック)を表します。passwd -l でロックしたときに付く記号です。
このファイルは root 以外は読めないようになっています。一般ユーザーで cat /etc/shadow を打つと、Permission denied になるはずです。
/etc/groupの4つの項目¶
最後に /etc/group です。1行が1グループで、4つの項目が並びます。
developers:x:1050:hanako,jiro
左から、グループ名・パスワード(x)・グループID(GID)・メンバーの一覧です。
ここで迷いやすいのが、4番目のメンバーの一覧です。ここに並ぶのは、このグループを補助グループとして持っているユーザーです。このグループが主グループのユーザーは、/etc/passwd の4番目の項目で決まるので、ここに書かれていないことがあります。
コマンドの使い分けを整理する¶
ファイルの項目が分かったら、それを書き換えるコマンドを結びつけていきます。どのコマンドがどのファイルの、どの項目を変えるのかを意識すると覚えやすくなります。
| やりたいこと | コマンドの例 | 変わる場所 |
|---|---|---|
| ユーザーを作り、ホームも作る | useradd -m taro |
/etc/passwd・/etc/shadow・ホームディレクトリ |
| ログインシェルを変える | usermod -s /bin/zsh taro |
/etc/passwd の7番目 |
| 補助グループに追加する | usermod -aG developers taro |
/etc/group の4番目 |
| パスワードの有効期限を90日にする | chage -M 90 taro |
/etc/shadow の5番目 |
| 次のログインでパスワードを変えさせる | chage -d 0 taro |
/etc/shadow の3番目 |
| パスワードをロックする | passwd -l taro |
/etc/shadow の2番目に ! が付く |
| ホームごとユーザーを消す | userdel -r taro |
3つのファイルとホームディレクトリ |
| グループの名前を変える | groupmod -n devs developers |
/etc/group の1番目 |
useradd の基本的な使い方は、ユーザーを追加する方法の記事で詳しく書いています。
新しいユーザーの初期設定はどこで決まる?¶
useradd でユーザーを作ったとき、何も指定しなかった項目には既定値が入ります。この既定値がどこに書かれているかも、よく問われるところです。
| ファイル・ディレクトリ | 中身 |
|---|---|
/etc/default/useradd |
既定のシェルや、ホームディレクトリを作る場所など。useradd -D で表示できる |
/etc/login.defs |
UID_MIN や、パスワードの有効期限の既定値 PASS_MAX_DAYS など |
/etc/skel/ |
新しいホームディレクトリにコピーされるファイルのひな形 |
/etc/skel/に.bashrcなどを置いておくと、useradd -mで作ったユーザーのホームディレクトリに、そのファイルがコピーされる。すでに作ってあるユーザーには反映されない。
最後の一文は見落としやすいので注意してください。/etc/skel/ を変えても、反映されるのはそのあとに作るユーザーだけです。
試験で混同しやすい2つのポイント¶
コマンドの表を眺めただけだと、似た名前のオプションで迷いがちです。とくに間違えやすい2つを、もう少し詳しく見ておきます。
usermodの-gと-Gの違い¶
usermod には、グループに関するオプションが小文字の -g と大文字の -G の2つあります。
小文字の -g は主グループを変えるオプションで、/etc/passwd の4番目の項目が書き換わります。大文字の -G は補助グループを指定するオプションで、こちらは /etc/group の4番目の項目が変わります。
さらに -G は、-a を付けずに使うと、指定したグループ以外の補助グループから外れてしまいます。既存の所属を残したまま追加したいときは、-aG と書くのが基本です。
パスワードのロックと、アカウントの停止は別もの¶
passwd -l と usermod -L は、どちらもハッシュの先頭に ! を付けてパスワードをロックします。ただし、止まるのはパスワードでのログインだけです。
usermod のマニュアルには、パスワードだけでなくアカウントそのものを止めたいときは、アカウントの有効期限も設定するよう注意書きがあります。例えば SSH の公開鍵でログインしているユーザーは、パスワードをロックしただけでは止められないことがある、ということです。
試験では、どのコマンドが /etc/shadow のどの項目を変えるのかを問われることが多いので、ロックは2番目、アカウントの有効期限は8番目、と結びつけて覚えておきましょう。
今日やる練習:手元のLinuxで項目を確かめる¶
ここまでの内容を、実際のLinuxで確かめてみましょう。練習用のユーザーを作って、ファイルのどこが変わるかを見ていきます。root 権限が必要なので、練習用の環境で行ってください。
# 練習用のユーザーを作る
sudo useradd -m -s /bin/bash lpicuser
# 3つのファイルの該当行を確かめる
getent passwd lpicuser
sudo getent shadow lpicuser
id lpicuser
# パスワードの有効期限を90日にして、設定を確かめる
sudo chage -M 90 lpicuser
sudo chage -l lpicuser
# 練習が終わったら、ホームディレクトリごと消す
sudo userdel -r lpicuser
getent passwd lpicuser では、/etc/passwd と同じ形の1行が表示されます。7つの項目を、さきほどの表と1つずつ見比べてみてください。
chage -l を打つと、/etc/shadow の日数の情報が、人が読みやすい日付の形で表示されます。chage -M 90 の前後で表示を比べると、5番目の項目がどこに対応するのかが分かります。
/etc/passwd を cat で直接見るのではなく getent を使っているのは、LDAP などのほかの仕組みでユーザーを管理している環境でも、同じコマンドで情報を引けるからです。
練習問題8問¶
ここからは、ユーザー・グループ管理の練習問題です。どれもこの記事のために作ったオリジナルの問題で、答えは1つに決まるようにしています。
問題1¶
/etc/passwd に次の行があります。3番目の項目 1001 は何を表していますか。
taro:x:1001:1001:Taro Yamada:/home/taro:/bin/bash
- 主グループのID
- ユーザーID
- パスワードを最後に変えた日
- ホームディレクトリの番号
正解:2。3番目はユーザーID(UID)で、4番目が主グループのID(GID)です。
問題2¶
/etc/shadow の2番目の項目の先頭に ! が付いていました。この状態を表すものはどれですか。
- パスワードが設定されていない
- パスワードの有効期限が切れている
- パスワードがロックされている
- ユーザーが root 権限を持っている
正解:3。
passwd -lでロックすると、ハッシュの先頭に!が付き、そのパスワードではログインできなくなります。
問題3¶
ユーザー taro のパスワードの有効期限を90日にしたいとき、正しいコマンドはどれですか。
chage -m 90 tarochage -M 90 tarochage -W 90 tarochage -I 90 taro
正解:2。
-Mが最大日数(有効期限)です。-mは最小日数、-Wは警告を出し始める日数、-Iは期限切れからアカウントが使えなくなるまでの日数です。
問題4¶
新しく作るユーザーのホームディレクトリに、あらかじめ .bashrc を置いておきたいとき、ファイルを入れておくディレクトリはどれですか。
/etc/default//etc/profile.d//etc/skel//home/
正解:3。
useradd -mでホームディレクトリを作るとき、/etc/skel/の中身がコピーされます。
問題5¶
/etc/group に次の行があります。4番目の項目に並んでいるユーザーの説明として正しいものはどれですか。
developers:x:1050:hanako,jiro
- このグループを主グループにしているユーザーの一覧
- このグループを補助グループとして持っているユーザーの一覧
- このグループを管理できるユーザーの一覧
- このグループのパスワードを知っているユーザーの一覧
正解:2。主グループは
/etc/passwdの4番目で決まるので、ここには補助グループとしてのメンバーが並びます。
問題6¶
ユーザー taro を削除するとき、ホームディレクトリもあわせて削除するコマンドはどれですか。
userdel tarouserdel -r tarousermod -L tarodeluser -h taro
正解:2。
userdelに-rを付けると、ホームディレクトリとメールスプールも削除されます。-rなしではホームディレクトリは残ります。
問題7¶
パスワードの有効期限の既定値 PASS_MAX_DAYS が書かれているファイルはどれですか。
/etc/login.defs/etc/default/useradd/etc/shadow/etc/security/limits.conf
正解:1。
/etc/login.defsには、PASS_MAX_DAYSのほかUID_MINなどが書かれています。新しく作るユーザーに適用される値です。
問題8¶
既存のユーザー taro のログインシェルを /bin/zsh に変えるコマンドはどれですか。
usermod -d /bin/zsh tarousermod -g /bin/zsh tarousermod -s /bin/zsh tarousermod -c /bin/zsh taro
正解:3。
-sがログインシェルです。-dはホームディレクトリ、-gは主グループ、-cはコメント(GECOS)を変えます。
間違えたときの見直し方¶
8問のうち間違えた問題は、選択肢を1つずつ「何を変えるオプションか」「どのファイルの何番目か」に言い換えてみてください。正解の選択肢だけでなく、ほかの選択肢の意味まで言えるようになると、同じ分野で迷わなくなります。
この見直しの考え方は、LPICの問題集で点数が伸びないときの記事でも詳しく書いています。
useradd や usermod -aG を実際に打ってみる課題は、LPIC-1のハンズオン課題の記事の課題5にまとめています。この記事で項目の意味を確認したら、ハンズオンで一通り手を動かすと定着しやすくなります。
InfraAcademyで続ける¶
手元にLinuxの環境がなくても、InfraAcademy ではブラウザ上で動くLinuxの練習環境で getent や id などのコマンドを打って確かめられます。
問題の形で知識を確認したい人は、InfraAcademy の資格模擬問題の「(無料)LPICの練習問題で毎日トレーニング300問」を使ってみてください。今日の8問で迷った分野を中心に、毎日少しずつ解いていくのがおすすめです。
Linuxの学習を何から順番に進めればいいか迷っている人は、InfraAcademy のLinuxロードマップも参考にしてください。
まとめ¶
LPIC-1のユーザー・グループ管理で押さえておきたいところを整理しました。
| ポイント | 内容 |
|---|---|
/etc/passwd |
7項目。3番目が UID、4番目が主グループ、7番目がログインシェル |
/etc/shadow |
9項目。2番目がハッシュで、! はロック。3〜8番目が日数の情報 |
/etc/group |
4項目。4番目は補助グループのメンバー |
| 既定値の場所 | /etc/default/useradd・/etc/login.defs・/etc/skel/ |
| 迷いやすいオプション | chage -M と -m、usermod -s と -d、userdel -r |
この分野は、ファイルの項目とコマンドのオプションを結びつけられれば、確実に得点できるところです。まずは練習用のユーザーを1人作って、getent と chage -l で中身を確かめてみてください。
参考¶
- 107.1 Manage user and group accounts and related system files(LPI Learning)
- LPIC-1 Exam 101 and 102 Objectives(Linux Professional Institute)
- passwd(5) - Linux manual page(man7.org)
- shadow(5) - Linux manual page(man7.org)
- group(5) - Linux manual page(man7.org)
- chage(1) - Linux manual page(man7.org)
- useradd(8) - Linux manual page(man7.org)
- usermod(8) - Linux manual page(man7.org)
- userdel(8) - Linux manual page(man7.org)
- login.defs(5) - Linux manual page(man7.org)



