/etc/shadow:パスワードのハッシュ(rootのみ読み取り可能)

/etc/shadow

/etc/shadowについての概要と詳細

/etc/shadowとは

/etc/shadow は、LinuxやUNIXシステムで各ユーザーのパスワード情報と有効期限を管理するためのセキュリティ強化されたファイルです。パスワードを安全に暗号化して保存し、ユーザーごとにパスワードの有効期限やアカウントロックなどの管理も行えます。

/etc/shadowの特徴

  • パスワード情報は暗号化された状態で保存される
  • ファイルのパーミッションは厳しく制限されており、root 以外のユーザーはアクセスできない
  • パスワード有効期限、変更日、ロック状態なども管理できる

ファイルの構造

各ユーザーに1行ずつ、以下の形式で記述されています:

ユーザー名:パスワード:最終変更日:最小日数:最大日数:警告日数:無効日数:有効期限:予約

例:

koan:$6$3nDJ.../n0:19300:0:99999:7:::

各フィールドの意味

  • ユーザー名: 対象ユーザーのログイン名。
  • パスワード: 暗号化されたパスワード。
    • !(エクスクラメーション):アカウントロック中
    • *:ログインできないアカウント(例:システム専用)
  • 最終変更日: 1970年1月1日からの経過日数。
  • 最小日数: パスワード変更の最小間隔(日数)。
  • 最大日数: パスワードの有効期限(日数)。
  • 警告日数: パスワード期限前の警告開始日数。
  • 無効日数: パスワード期限切れ後にアカウントが無効になるまでの日数。
  • 有効期限: アカウントの有効期限(1970年1月1日からの日数)。
  • 予約: 将来使用のためのフィールド(通常空)。

確認方法

/etc/shadow はセキュリティ保護されているため、通常ユーザーは読めません。

$ sudo cat /etc/shadow
$ sudo grep mtf /etc/shadow

パーミッションとセキュリティ

$ ls -l /etc/shadow
-r-------- 1 root root 1234 Jul 22 10:00 /etc/shadow
  • ファイルは root のみ読み取り可能(パーミッション:400
  • アクセス制御が厳重に管理されていることで、パスワード漏洩を防ぐ

編集方法

/etc/shadow を直接編集するのは危険なため、以下の専用コマンドを使用します:

  • passwd:パスワードの変更
  • chage:有効期限や警告日数などの変更
  • usermod:ユーザーの設定変更

例:

# パスワード有効期限を90日に設定
$ sudo chage -M 90 mtf

まとめ

/etc/shadow は、Linux システムにおいてユーザーのパスワードとセキュリティ関連の情報を厳重に管理するための重要なファイルです。高いセキュリティが要求される領域であるため、アクセス制限や管理コマンドの使用ルールを正しく理解して、安全なユーザー管理を行うことが求められます。