コース一覧
LinuC レベル1(LPIC-1対応)対策
passwdとshadow

LinuC レベル1(LPIC-1対応)対策

ブートとsystemd、パッケージ管理(APT/RPM両系統)、コマンドとviの操作、ファイルシステム、シェルスクリプト、ユーザー管理とセキュリティ、ネットワークまで、LinuC レベル1(LPIC-1対応)の全出題範囲を、毎レッスン実際にコマンドを打って確かめながら学べる対策コースです。ブラウザの中で本物の Debian 12 が動いていて、62レッスンのうち36本は読むだけで終わらず、自分の手でコマンドを打った結果で採点されます。Linux入門を修了した方を対象としています。101・102それぞれの模試60問で分野別の弱点を洗い出し、直前チェックで暗記事項を固めてから本番に臨めます。

1
試験ガイダンス
01. LinuC/LPICとは15分
02. LinuCとLPICの選び方15分
03. 学習計画15分
04. 出題形式を体験15分
2
101 ブートとアーキテクチャ
01. ブートの流れ18分
02. GRUB15分
03. systemdとターゲット18分
04. ハードウェア情報18分
05. カーネルモジュール18分
06. 過去問 アーキテクチャ15分
3
101 パッケージ管理
01. Debian系パッケージ18分
02. RPM系パッケージ15分
03. 両系統の対応表15分
04. リポジトリ管理18分
05. 共有ライブラリ18分
06. 過去問 パッケージ管理15分
4
101 GNU/Unixコマンド
01. ファイル操作の試験オプション18分
02. テキスト処理18分
03. ストリームとリダイレクト18分
04. プロセス監視18分
05. 優先度18分
06. grepと正規表現18分
07. viの操作15分
08. 過去問 コマンド15分
5
101 ファイルシステム
01. パーティション15分
02. 作成とマウント18分
03. fstabとUUID18分
04. パーミッションとリンク18分
05. 容量とクォータ18分
06. findとlocate18分
07. 過去問 ファイルシステム15分
6
102 シェルとスクリプト
01. シェル環境18分
02. testと条件式18分
03. スクリプトの制御18分
04. cronとat15分
05. systemdタイマー18分
06. 過去問 シェル15分
7
102 ユーザーとセキュリティ
01. passwdとshadow18分
02. ユーザー管理コマンド18分
03. suとsudo18分
04. 特殊パーミッション18分
05. ホストのセキュリティ18分
06. SSHとGPG18分
07. 過去問 ユーザーとセキュリティ15分
8
102 ネットワーク
01. TCP/IPとウェルノウンポート18分
02. アドレス設定18分
03. ルーティング18分
04. 名前解決の設定18分
05. 疎通トラブルシュート18分
06. 過去問 ネットワーク15分
9
102 システム管理
01. 時刻とNTP15分
02. ロケールと文字コード18分
03. ログ管理18分
04. サービス管理の試験形式18分
05. メールと印刷のきほん15分
06. 過去問 システム管理15分
10
模試と直前対策
01. 模試 10190分
02. 101弱点復習15分
03. 模試 10290分
04. 102弱点復習15分
05. 直前チェック15分
06. 受験と次のステップ15分

passwdとshadow

/etc/passwd の1行を見て、3番目が UID か GID かで迷ったら、その問題は落ちます。順序は理屈で導けないので、実物を見ながら固めます。

/etc/passwd は7つ、コロン区切り

誰でも読める 644 のファイルです。

プレーンテキスト

root:x:0:0:root:/root:/bin/bash
番号名前意味
1ユーザー名ログイン名
2パスワード欄現在は x が入り、実体は /etc/shadow にある
3UIDユーザーID。root は必ず 0
4GIDプライマリグループのID
5コメント (GECOS)氏名や連絡先。カンマ区切りで複数持てる
6ホームディレクトリログイン直後のカレントディレクトリ
7ログインシェルログイン時に起動されるプログラム

第2フィールドの x は、パスワードの本体は shadow にあるという印です。ここに暗号化文字列を直接書いていた時代もありましたが、passwd は誰でも読めるため危険で、いまは分離されています。第7フィールドが /usr/sbin/nologin や /bin/false のアカウントは、ログインしようとしても即座に終了します。サービス専用のアカウントで使う手です。

/etc/shadow は9つ、日付は1970年からの経過日数

こちらは root だけが読める 640 または 000 です。

番号名前意味
1ユーザー名passwd と対応させるキー
2暗号化パスワードハッシュ化された文字列
3最終変更日1970-01-01 からの経過日数
4最短日数変更後この日数は再変更できない
5最長日数この日数を超えると変更が必要
6警告日数期限の何日前から警告するか
7猶予日数期限切れ後、無効化までの猶予
8失効日アカウント自体が使えなくなる日
9予約将来のための未使用フィールド

第2フィールドの読み方が頻出です。! や !! で始まればロックされていて、パスワード認証でログインできません。* はパスワードが設定されておらずログイン不可です。空文字ならパスワード無しで入れてしまう危険な状態です。$6$ で始まれば SHA-512 でハッシュ化されています。

/etc/group のメンバー欄にプライマリグループは出ない

番号名前意味
1グループ名sudo など
2パスワードほぼ x。実体は /etc/gshadow
3GIDグループID
4メンバー補助グループとして所属するユーザーをカンマ区切りで列挙

第4フィールドに載るのは補助グループとしての所属だけです。プライマリグループの所属は /etc/passwd の第4フィールドで表現されるので、/etc/group のメンバー欄には現れません。引っかけとして頻出です。/etc/gshadow はグループのパスワードと管理者を持つファイルで、passwd に対する shadow と同じ関係です。

UID 0 は root、1 から 999 まではシステムユーザー用に予約され、一般ユーザーは Debian 系でも Red Hat 系でも 1000 番から割り当てられます。この範囲は /etc/login.defs の UID_MIN と UID_MAX で決まります。

ファイルを直接読むより getent

ターミナル

getent passwd root getent group sudo

getent は /etc/nsswitch.conf の設定に従ってデータベースを引きます。ローカルファイルだけでなく LDAP などの外部ソースも含めて引けるので、cat /etc/passwd より正確です。引数を省略すると全件出ます。整合性の検査は pwck が passwd と shadow を、grpck が group と gshadow を見て、フィールド数の不足や重複、存在しないホームディレクトリを報告します。

試験で狙われるところ

UID が第3、GID が第4です。暗号化パスワードが入るのは /etc/passwd ではなく /etc/shadow です。/etc/shadow の日付は西暦ではなく経過日数です。/etc/group のメンバー欄にプライマリグループは現れません。そして ! はロック、* は未設定という違いがあります。

ヒント

cut は -d で区切り文字、-f でフィールド番号を指定します。コロン区切りなら cut -d ':' -f 3 です

awk は -F ':' で区切り文字を指定し、$3 のように番号でフィールドを参照します。条件だけ書けばその条件に合う行が出力されます

1行目は > で新規作成、2行目以降は >> で追記します。例として echo "rootuid=$(grep '^root:' /etc/passwd | cut -d ':' -f 3)" > /root/user-report.txt です

  • 1. grep '^root:' /etc/passwd で root の行を見て、7つのフィールドを目で確認する
  • 2. cut -d ':' -f 3 で root の UID を取り出し、rootuid=<値> の形で /root/user-report.txt に書く
  • 3. nobody の行から第7フィールド (ログインシェル) を取り出し、nobodyshell=<値> の形で追記する
  • 4. awk -F ':' で第3フィールドが 1000 以上の行を数え、normalusers=<件数> の形で追記する
  • 5. /etc/group の行数を wc -l で数え、grouplines=<件数> の形で追記する

5 項目で採点します