Linux 学習 [21] アカウントとグループ 1---Linux の /etc/passwd フィールドと /etc/shadow フィールドの説明

序文

Raspberry Piユーザーの権限を管理者権限に変更する場合、/etc/passwdファイルを変更することになりますが、当時は各フィールドの具体的な意味が曖昧でしたので、最近関連書籍を読んだ結果、以下に説明します。
同時に、関連するコンテンツはアカウント関連であるため、Linux にもアカウント関連のコンテンツをいくつか追加します。
Raspberry Pi関連のブログ


1. passwd フィールドの説明

コマンドを入力してcat /etc/passwdファイルの内容を表示します

ここに画像の説明を挿入しますすべての Linux システムの passwd ファイルの最初の行は root 管理者行であり、この行には で:区切られた 7 つのフィールドがあります。
これら 7 つのフィールドの意味は、次の表に対応しています。

アカウント名 パスワード UID 性同一性障害 ユーザー情報記載欄 メインフォルダー シェル
バツ 0 0 /根 /bin/bash

帐号名称:
Linux は実際には UID に基づいて識別しますが、UID はユーザーにとって覚えにくいため、UID に対応するアカウント名が必要です。たとえば、ルートの対応する UID は 0 (3 番目のフィールド) です。

密码:
初期の Unix システムではこのフィールドにパスワードが設定されていましたが、このファイルの特性上、すべてのプログラムが読み取ることができ、パスワード データが簡単に盗まれる可能性があるため、このフィールドのパスワード データは後に変更されました。 /etc/shadow 内。したがって、ここには「x」が表示されます。

UID:
これはユーザー識別コードです。通常、Linux には UID に対していくつかの制限があります。

ID 範囲 ID ユーザーのプロパティ
0 (システム管理者) UID が 0 の場合、このアカウントは「システム管理者」であることを意味します。したがって、他のアカウント名にも root 権限を持たせたい場合は、アカウントの UID を 0 に変更するだけです。これは、システムのシステム管理者は root だけではないことを意味します。ただし、UID 0 のアカウントを複数持つことはお勧めできません。システム管理者が混乱しやすいためです。
1~999 (システム アカウント) システム用に予約されている ID 実際には、0 を除いて、他の UID の権限や特性と変わりはありません。デフォルトで 1000 未満の数値を予約済みアカウントとしてシステムに残すのは単なる習慣です。

システム上で開始されたネットワーク サービスまたはバックグラウンド サービスは、より小さいアクセス許可で実行する必要があるため、これらのサービスの実行にルート ID を使用したくないため、これらの実行中のプログラムの所有者アカウントを提供する必要があります。これらのシステム アカウントは通常、ログインのためにアクセスできないため、第 10 章で説明した特別なシェル /sbin/nologin が存在します。

システム アカウントの起源に応じて、このようなアカウントは通常、次の 2 種類に大別されます。

ID 範囲 ID ユーザーのプロパティ
1~200 ディストリビューション自体によって作成されたシステム アカウント。
201~999 ユーザーがシステム アカウントを必要とする場合は、アカウント UID を使用できます。
1000~60000 (アカウントにログインできます) 一般ユーザー向け。実際、現在の Linux カーネル (バージョン 3.10.x) は、4294967295 (2^32-1) のような大きな UID 番号をすでにサポートしています。

UID が 0 の場合は root なので、/etc/passwd には特に注意してください。

GID:
これは /etc/group に関連しています。実際、/etc/group の概念は /etc/passwd に似ていますが、グループ名と GID の対応を標準化するために使用される点が異なります。

使用者信息说明栏:
このフィールドには基本的に重要な目的はなく、このアカウントの意味を説明するためにのみ使用されます。

主文件夹:
これはユーザーのホーム フォルダーです。上記の例で言えば、root のホーム フォルダーは /root にあるため、root がログインすると、すぐに /root ディレクトリに移動します。特に大きな容量を持つアカウントをお持ちで、そのアカウントのメイン フォルダーを別のハード ドライブに移動したい場合はどうすればよいでしょうか? このフィールドは変更できます。デフォルトのユーザーのホームフォルダーは /home/yourIDname です。

Shell:
第 10 章 BASH で何度も述べましたが、ユーザーはシステムにログインすると、ユーザーの操作タスクを実行するためにシステムのコアと通信するためのシェルを取得します。では、なぜデフォルトのシェルは bash を使用するのでしょうか? このフィールドで指定します。ここで注意する必要があるのは、アカウントがシェル環境を取得するのを妨げるログイン アクションを置き換えるために使用できるシェルがあり、それが /sbin/nologin であるということです。これは、純粋なポップ用のデータの作成にも使用できます。メールアカウント。


2. シャドウフィールドの説明

passwd 内のアカウントのパスワードは x として表示されます。これは、パスワードがシャドウ ファイルに配置され、部分的に暗号化されているためです。
を通じてファイルの内容を確認できますsudo cat /etc/shadowで区切られた合計 9 つのフィールドがあります:
ここに画像の説明を挿入します

各フィールドについては以下で説明します

アカウント名 アカウントパスワード 最後にパスワードを変更した日付 パスワードは日付変更できません パスワードを再度変更する必要があるまでの日数 パスワード変更が必要になるまでの警告日数 パスワード有効期限後のアカウント猶予時間 (パスワード有効期限日) アカウントの有効期限 予約する
19541 0 99999 7

帐号名称:
パスワードもアカウント番号に対応する必要があるため、このファイルの最初の列はアカウント番号であり、/etc/passwd と同じである必要があります。

密码:
このフィールドのデータは実際のパスワードであり、エンコードされた (暗号化された) パスワードです。いくつかの特殊な記号を含む文字のみが表示されます。特別な注意が必要なのは、これらの暗号化されたパスワードは解読が困難ですが、「困難」が「不可能」を意味するわけではないということです。したがって、このファイルのデフォルト設定は「-rw」です。 -------" または "----------"、つまり root のみが読み書きできます。

さらに、パスワードのエンコード技術はさまざまに異なるため、エンコード システムが異なると、このフィールドの長さも異なります。たとえば、古い DES および MD5 エンコード システムによって生成されるパスワードの長さは、現在使用されている SHA [2] とは異なります。明らかにSHAの方がパスワード長が長いです。固定エンコード方式で生成されるパスワードは一貫した長さである必要があるため、「このフィールドの長さを変更すると、パスワードは無効になります(計算できなくなります)」。多くのソフトウェアは、この関数を使用して、このフィールドの前に ! または * を追加して、パスワード フィールドの長さを変更し、パスワードを「一時的に無効」にします。

最近更动密码的日期:
このフィールドには、「パスワードが変更された日」の日付が記録されます。Linux の日付は、1970 年 1 月 1 日を 1 として累積した日付を使用して計算されます。1971 年 1 月 1 日は 366、19541 は 2023 年を指します。これは自分で計算できます。

密码不可被更动的天数:(与第 3 字段相比)
4 番目のフィールドには、このアカウントのパスワードが最後に変更されてから再度変更できるようになるまでの日数が記録されます。0 の場合、パスワードはいつでも変更できることを意味します。この制限は、一部の人がパスワードを何度も変更することを防ぐために設計されています。20 日に設定されている場合、パスワードを設定した後、20 日以内はパスワードを変更できません。

密码需要重新变更的天数:(与第 3 字段相比)
パスワードを頻繁に変更するのは良い習慣です。ユーザーにパスワードの変更を強制するために、このフィールドでは、最後のパスワード変更からパスワードを再度変更する必要がある日数を指定できます。この日数以内にパスワードをリセットする必要があります。リセットしないと、アカウントのパスワードが「期限切れ」になります。上記の 99999 (273 年として計算) のような場合は、パスワードの変更は必須ではないことを意味します。

密码需要变更期限前的警告天数:(与第 5 字段相比)
アカウントのパスワードの有効期限が近づくと (フィールド 5)、システムはこのフィールドの設定に基づいてアカウントに「警告」メッセージを発行し、「パスワードの有効期限は n 日以内になります。急いでください」と通知します。パスワードをリセットしてください」の場合、上記の例のように、システムはパスワードの有効期限が切れる 7 日以内にユーザーに警告します。

密码过期后的帐号宽限时间(密码失效日):(与第 5 字段相比)
パスワードの有効期限は、「更新日(フィールド 3)」+「再変更日(フィールド 5)」です。この期間を過ぎてもユーザーがパスワードを更新しない場合、パスワードは期限切れとみなされます。パスワードの有効期限が切れても、アカウントは bash を取得するためのシステムへのログインなど、他のタスクに引き続き使用できます。ただし、パスワードの有効期限が切れた場合、システムにログインすると、ログインして引き続き使用できるようになる前に、システムによってパスワードのリセットが強制されます。これがパスワード有効期限機能です。

では、このフィールドの機能は何でしょうか? パスワードの有効期限が切れてから数日経っても、ユーザーがまだログインしてパスワードを変更しない場合、このアカウントのパスワードは「期限切れ」になります。つまり、そのパスワードを使用してアカウントにログインできなくなります。パスワードの有効期限はパスワードの有効期限とは異なることに注意することが重要です。

帐号失效日期:
この日付は、3 番目のフィールドと同様に、1970 年からの合計日数を使用して設定されます。このフィールドは次のことを示します: このアカウントは、このフィールドで指定した日付以降は使用できなくなります。これがいわゆる「アカウントの有効期限」ですが、この時点でパスワードの有効期限が切れているかどうかに関係なく、この「アカウント」は使用できなくなります。このフィールドは通常「有料サービス」システムで使用されます。アカウントが使用できなくなる日付を指定することができます。

保留:
最後のフィールドは、将来新しい機能が追加されるかどうかを確認するために予約されています。


要約する

このブログは主に、Raspberry Pi の構成に関連するいくつかの問題に関連する原則を記録し、説明します。

おすすめ

転載: blog.csdn.net/Edwinwzy/article/details/132361491