ウェブサイト検索

Linux 用 /etc/shadow ファイル完全ガイド


Linux で認証プロセスを実行するには、shadow ファイルと passwd ファイルが一般的に使用されます。シャドウ ファイルは、システム上のユーザーのデータを保存するテキストベースのファイルです。最も重要なことは、ここでのパスワードは暗号化形式またはハッシュ形式で保存されることです。

/etc/passwd ファイル内にパスワードを保存すると、システムの安全性が低下する可能性があります。 Shadow ファイルのファイル権限は 640 または 400 に設定されます。

何をカバーしますか?

この記事では、Linux の Shadow ファイルについて説明します。

シャドウ ファイルが必要な理由

Linux の passwd ファイルは誰でも読み取り可能であるため、暗号化されたパスワードはシャドウ ファイルと呼ばれる別のファイルに転送されます。 root のみが読み取り可能です。シャドウ ファイルは、/etc/shadow の /etc フォルダー内にもあります。

passwd ファイルと同様に、シャドウ ファイルの最初のフィールドにはアカウント名が含まれており、コロンを使用して異なるフィールドを区切ります。暗号化されたパスワードを含む別のファイルを用意すると、アカウントに新しいパラメータを追加することも容易になります。さらに、これはアカウントの制御に役立ち、パスワードのエージングも制御します。

シャドウ ファイルは、暗号化されたパスワードを保護するために読み取り保護されたままになります。ファイルへの読み取りアクセス権を持つ人は誰でも暗号化されたパスワードを解読できるため、これは重要なセキュリティ対策です。

シャドウ ファイルのセキュリティ面

シャドウ ファイルは、Linux システムの root パスワードをリセットするための優れたツールです。 root ユーザーのアカウント エントリを見つけて、いくつかの設定を操作して root パスワードを回復できます。ただし、Shadow ファイルからパスワードを回復するプロセスは、現時点では話題から外れています。

前述したように、シャドウ ファイルはルートだけが読み取ることができます。不正なアカウント所有者が他のシステム アカウントをハッキングしようとしても、壁に頭をぶつけるだけです。何らかの理由で誰かがパスワードにアクセスした場合、それを解読するまでの時間は、使用されている暗号化アルゴリズムによって異なります。ただし、暗号化されたパスワードを解読するには数分から数年かかる場合があるため、それほど簡単ではありません。

シャドウ ファイルの構文

シャドウ ファイルの構文は次のとおりです。

login:encyrptedpassword:lastchangedate:min_age:max_age:warning:inactivity:expiration_date:reserved

上の行のフィールドは日数で表されます。 lastchangeexpiration は日付フィールドです。これらのフィールドの時刻は、Unix 時間の開始日、つまり 1970 年 1 月 1 日から取得されます。

シャドウ ファイルのフィールドの説明

このファイルには、コロン「:」で区切られた 9 つのフィールドがあります。

ここで各フィールドについて説明します。

login: Shadow ファイルの各行はユーザー名で始まります。ユーザー名は、Shadow ファイル内のエントリと /etc/passwd 内のエントリをリンクします。

encryptedpassword: 暗号化されたパスワードのプレースホルダーです。したがって、実際のパスワードとは明らかに似ていません。 * または !がここに配置されている場合、これはアカウントにパスワードがないことを意味します。

lastchange date – 基本的には、Unix 時間の開始からの日数で表した日付です。これは、パスワードが最後に変更された日付を示す時刻です。この値が 0 の場合、次回ユーザーがログインするときにパスワードを変更する必要があることを意味します。

minage – このフィールドは、日付値が minage+lastage の場合にのみパスワードを変更できることを示します。このフィールドが空の場合は、パスワードがいつでも変更できることを意味します。

maxage – このフィールドは、日付値が maxage+lastage の場合、パスワードを変更する必要があることを示します。実際には、パスワードの有効期限が切れる日付です。空のパスワードの場合、有効期限は無意味であるため、maxage、warning、および inactivity フィールドは必要ありません。

warning – 日付が lastchange+maxage-warning になった場合、またはパスワードの警告期間が開始された場合に、ユーザーにパスワードを変更するよう警告します。この値が 0 または空白 (空) の場合、警告期間がないことを意味します。

非アクティブ – パスワードの有効期限が切れても、ユーザーは非アクティブな日数が経過するまではパスワードを変更できます。このフィールドが入力されていない場合、非アクティブ期間はありません。

有効期限 – ユーザー アカウントの有効期限が切れる日付です。この日以降、アカウントはログインできなくなります。このフィールドが空の場合、アカウントは期限切れになりません。また、ここでは「0」値を使用しないでください。

特別な旗: この場所は通常は使用されず、将来の使用のために置かれています。

次に、上記のフィールドの理解を明確にするために例を見てみましょう。たとえば、シャドウ ファイルの以下のサンプル エントリを見てみましょう。

linux-console:$6$kKRCC8ip8nKtFjjdZJIj:12825:14:45:10:30:13096

各フィールドを段階的に見てみましょう。

1. linux-console はユーザーの名前です。

2. 次のフィールドは、ユーザーの暗号化されたパスワードです。長いパスワードです。ただし、簡潔にするために少し省略しています。

3. ユーザーは、Unix エポック時間 (つまり 1970 年 1 月 1 日) から 2005 年 2 月 11 日にあたる 12825 日または 35 年 1 か月と 11 日後にパスワードを変更しました。

4. ユーザーがパスワードを変更できるようになるまでの最短期間は 14 日です。パスワードをいつでも変更できるようにするには、このフィールドを 0 に設定します。

5. パスワードは 45 日ごとにリセットする必要があります。

6. パスワード変更日の10日前にパスワード再設定の警告が表示されます。

7. パスワードの有効期限が切れ、30 日間ログイン操作が実行されなかった場合、ユーザー アカウントは無効になります。

8. Unix エポックタイムまたは 2005 年 11 月 9 日から 13096 日後、アカウントは期限切れになります。

結論

シャドウ ファイルは、アカウント情報を保存するための非常に安全な場所です。 passwd ファイル内の強力なユーザー パスワードにはセキュリティ上の懸念があります。 Shadow ファイルを root が読み取り可能にすると、悪意のあるユーザーや攻撃者によるパスワード悪用の可能性が排除されるだけです。

関連記事: