ホームページ >運用・保守 >Linuxの運用と保守 >Linux システムのアカウント ファイルは何で構成されていますか?

Linux システムのアカウント ファイルは何で構成されていますか?

青灯夜游
青灯夜游オリジナル
2022-05-13 16:25:039587ブラウズ

アカウント ファイルは 5 つの部分で構成されます: 1. 「/etc/passwd」、システム内のすべてのユーザーの基本情報を保存するシステム ユーザー構成ファイル、2. 「/etc/shadow」、システムを保存するユーザーのパスワード情報; 3. ユーザーグループ設定ファイル「/ect/group」には、ユーザーグループのすべての情報などが保存されます。

Linux システムのアカウント ファイルは何で構成されていますか?

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

Linux システムのアカウント ファイルには 5 つのコンポーネントがあります:

  • /etc/passwd file

  • /etc/shadow ファイル

  • /ect/グループ ファイル

  • /etc/gshadow ファイル

  • /etc/login.defs ファイル

1、/etc/passwd ファイル

/etc/ passwd ファイルは、システム内のすべてのユーザーの基本情報を保存するシステム ユーザー構成ファイルであり、すべてのユーザーがこのファイルに対して読み取り操作を実行できます。

まず、このファイルを開いて内容を確認してみましょう。実行コマンドは次のとおりです:

[root@localhost ~]# vi /etc/passwd
#查看一下文件内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...省略部分输出...

/etc/passwd ファイルの内容が非常に規則的であることがわかります。 、レコードの各行はユーザーに対応します。

読者は、なぜ Linux システムにデフォルトでこれほど多くのユーザーが存在するのかと疑問に思うかもしれません。これらのユーザーの大部分は、システムまたはサービスの通常の動作に必要なユーザーであり、このようなユーザーはシステム ユーザーまたは疑似ユーザーと呼ばれることがよくあります。システム ユーザーはシステムへのログインに使用できませんが、削除することはできません。削除すると、これらのユーザーに依存するサービスやプログラムが正常に実行できなくなり、システムの問題が発生するためです。

それだけではなく、ユーザー情報の各行は「:」を区切り文字として7つのフィールドに分かれており、各フィールドの意味は以下の通りです。これらのフィールドを 1 つずつ紹介します。

ユーザー名

ユーザー名は、ユーザーの ID を表す文字列です。

前に述べたように、ユーザー名はユーザーの記憶を容易にするためだけのものであり、Linux システムは UID を使用してユーザー ID を識別し、ユーザー権限を割り当てます。ユーザー名と UID の対応関係は、/etc/passwd ファイルで定義されます。

パスワード

「x」は、このユーザーがパスワードを持っていることを意味しますが、実際のパスワードではありません。実際のパスワードは /etc/shadow ファイルに保存されます(次のセクションで詳しく説明します)。

初期の UNIX では、ここに保存されているのは実際の暗号化されたパスワード文字列でしたが、すべてのプログラムがこのファイルを読み取ることができるため、ユーザー データは非常に簡単に盗まれます。

パスワードは暗号化されていますが、総当たりクラッキングを使用して解読することもできます。

したがって、Linux システムは実際の暗号化されたパスワード文字列を /etc/shadow ファイルに配置するようになり、このファイルは root ユーザーのみが参照および操作できるようになり、パスワードのセキュリティが最大限に確保されます。 。

「x」は実際のパスワードを表すものではないため、削除できないことに注意してください。「x」を削除すると、システムはユーザーがパスワードを持っていないと判断し、結果として、ユーザー名を入力する パスワードを入力せずにログインできる (リモートではなく、パスワードなしでのみログインできます) 特別な状況 (ユーザー パスワードのクラッキングなど) がない限り、これは当然ながら実行できません。

UID

UID、これはユーザー ID です。各ユーザーには一意の UID があり、Linux システムは UID によって異なるユーザーを識別します。

実際には、UID は 0 ~ 65535 の数値です。異なる範囲の数値は異なるユーザー ID を表します。

GID

完全名は「グループ ID」で、「グループ ID」と呼ばれます。これは、ユーザーの初期グループのグループ ID 番号を表します。ここでは、初期グループと追加グループの概念を説明する必要があります。

初期グループは、ユーザーがログイン時にこのユーザー グループに関連する権限を持っていることを意味します。各ユーザーは初期グループを 1 つだけ持つことができ、通常はユーザーのユーザー名と同じグループ名がユーザーの初期グループとして使用されます。例えばユーザーランプを手動で追加する場合、ユーザーランプ作成時にランプユーザーの初期グループとしてランプグループが作成されます。

追加グループとは、ユーザーが他の複数のユーザー グループに参加し、これらのグループの権限を持つことができることを意味します。各ユーザーは、初期グループを 1 つだけ持つことができます。初期グループに加えて、ユーザーは他のユーザー グループに参加できます。これらのユーザー グループは、このユーザーの追加グループです。複数の追加グループが存在する可能性があり、ユーザーはこれらの追加グループに対する権限を持つことができます。

たとえば、最初のグループ ランプに加えて、ランプ ユーザーをユーザー グループに追加すると、ランプ ユーザーはランプ グループとユーザー グループの両方に属します。ここで、ランプは初期グループとユーザーです。は追加のグループです。

もちろん、初期グループと追加グループの ID は変更できますが、初期グループを変更すると管理者のロジックが混乱する場合があるため、作業では初期グループは変更せず、追加グループのみを変更します。

/etc/passwd ファイルの 4 番目のフィールドにある ID が、このユーザーの初期グループであることに注意してください。

説明情報

このフィールドには重要な目的はなく、このユーザーの意味を説明するためにのみ使用されます。

メインディレクトリ

也就是用户登录后有操作权限的访问目录,通常称为用户的主目录。

例如,root 超级管理员账户的主目录为 /root,普通用户的主目录为 /home/yourIDname,即在 /home/ 目录下建立和用户名相同的目录作为主目录,如 lamp 用户的主目录就是 /home/lamp/ 目录。

默认的Shell

Shell 就是 Linux 的命令解释器,是用户和 Linux 内核之间沟通的桥梁。

我们知道,用户登陆 Linux 系统后,通过使用 Linux 命令完成操作任务,但系统只认识类似 0101 的机器语言,这里就需要使用命令解释器。也就是说,Shell 命令解释器的功能就是将用户输入的命令转换成系统可以识别的机器语言。

通常情况下,Linux 系统默认使用的命令解释器是 bash(/bin/bash),当然还有其他命令解释器,例如 sh、csh 等。

2、/etc/shadow 文件

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。

前面介绍了 /etc/passwd 文件,由于该文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。

/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

注意,如果这个文件的权限发生了改变,则需要注意是否是恶意攻击。

介绍此文件之前,我们先打开看看,执行如下命令:

[root@localhost ~]#vim /etc/shadow
root: $6$9w5Td6lg
$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fl38RH15wzVoom ff9isV1 PzdcXmixzhnMVhMxbvO:15775:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
…省略部分输出…

同 /etc/passwd 文件一样,文件中每行代表一个用户,同样使用 ":" 作为分隔符,不同之处在于,每行用户信息被划分为 9 个字段。每个字段的含义如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

接下来,给大家分别介绍这 9 个字段。

用户名

同 /etc/passwd 文件的用户名有相同的含义。

加密密码

这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。

注意,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 "!"、"*" 或 "x" 使密码暂时失效。

所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。

最后一次修改时间

此字段表示最后一次修改密码的时间,可是,为什么 root 用户显示的是 15775 呢?

这是因为,Linux 计算日期的时间是以  1970 年 1 月 1 日作为 1 不断累加得到的时间,到 1971 年 1 月 1 日,则为 366 天。这里显示 15775 天,也就是说,此 root 账号在 1970 年 1 月 1 日之后的第 15775 天修改的 root 用户密码。

那么,到底 15775 代表的是哪一天呢?可以使用如下命令进行换算:

[root@localhost ~]# date -d "1970-01-01 15775 days"
2013年03月11日 星期一 00:00:00 CST

可以看到,通过以上命令,即可将其换算为我们习惯的系统日期。

最小修改时间间隔

最小修改间隔时间,也就是说,该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是 0,则密码可以随时修改;如果是 10,则代表密码修改后 10 天之内不能再次修改密码。

此字段是为了针对某些人频繁更改账户密码而设计的。

密码有效期

经常变更密码是个好习惯,为了强制要求用户变更密码,这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。

该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。管理服务器时,通过这个字段强制用户定期修改密码。

密码需要变更前的警告天数

与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 "再过 n 天你的密码就要过期了,请尽快重新设置你的密码!"。

该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 "修改密码" 的警告信息。

密码过期后的宽限天数

也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。

比如说,此字段规定的宽限天数是 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。

账号失效时间

同第 3 个字段一样,使用自  1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!

该字段通常被使用在具有收费服务的系统中。

保留

这个字段目前没有使用,等待新功能的加入。

3、/ect/group 文件

/ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中。

此文件是记录组 ID(GID)和组名相对应的文件。前面讲过,etc/passwd 文件中每行用户信息的第四个字段记录的是用户的初始组 ID,那么,此 GID 的组名到底是什么呢?就要从 /etc/group 文件中查找。

/etc/group 文件的内容可以通过 Vim 看到:

[root@localhost ~]#vim /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
…省略部分输出…
lamp:x:502:

可以看到,此文件中每一行各代表一个用户组。在前面章节中,我们曾创建 lamp 用户,系统默认生成一个 lamp 用户组,在此可以看到,此用户组的 GID 为 502,目前它仅作为 lamp 用户的初始组。

各用户组中,还是以 ":" 作为字段之间的分隔符,分为 4 个字段,每个字段对应的含义为:

组名:密码:GID:该用户组中的用户列表

接下来,分别介绍各个字段具体的含义。

组名

也就是是用户组的名称,有字母或数字构成。同 /etc/passwd 中的用户名一样,组名也不能重复。

组密码

和 /etc/passwd 文件一样,这里的 "x" 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。

不过,用户设置密码是为了验证用户的身份,那用户组设置密码是用来做什么的呢?用户组密码主要是用来指定组管理员的,由于系统中的账号可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。

组ID (GID)

就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。

这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。

组中的用户

此字段列出每个群组包含的所有用户。需要注意的是,如果该用户组是这个用户的初始组,则该用户不会写入这个字段,可以这么理解,该字段显示的用户都是这个用户组的附加用户。

举个例子,lamp 组的组信息为 "lamp:x:502:",可以看到,第四个字段没有写入 lamp 用户,因为 lamp 组是 lamp 用户的初始组。如果要查询这些用户的初始组,则需要先到 /etc/passwd 文件中查看 GID(第四个字段),然后到 /etc/group 文件中比对组名。

每个用户都可以加入多个附加组,但是只能属于一个初始组。所以我们在实际工作中,如果需要把用户加入其他组,则需要以附加组的形式添加。例如,我们想让 lamp 也加入 root 这个群组,那么只需要在第一行的最后一个字段加入 lamp,即 root:x:0:lamp 就可以了。

一般情况下,用户的初始组就是在建立用户的同时建立的和用户名相同的组。

4、/etc/gshadow文件

组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中。

首先,我们借助 Vim 命令查看一下此文件中的内容:

[root@localhost ~]#vim /etc/gshadow
root:::
bin:::bin, daemon
daemon:::bin, daemon
...省略部分输出...
lamp:!::

文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符分为 4 个字段,每个字段的含义如下:

组名:加密密码:组管理员:组附加用户列表

组名

同 /etc/group 文件中的组名相对应。

组密码

ほとんどのユーザーでは、通常、グループ パスワードが設定されていないため、このフィールドは空であることが多いですが、「!」になる場合もあります。これは、グループにグループ パスワードがなく、グループ管理者もいないことを意味します。

グループ管理者

システム管理者の観点から見ると、このファイルの最大の機能はグループ管理者を作成することです。では、グループ管理者とは何でしょうか?

Linux システムにアカウントが多すぎて、スーパー管理者の root が忙しい可能性があることを考慮すると、ユーザーがグループに参加したいときに、root が時間内に応答できない可能性があります。この場合、グループ管理者がいる場合、その管理者が管理するグループにユーザーを追加できるため、root の手間が省けます。

しかし、sudo などの現在のツールのせいで、グループ管理者のこの機能はほとんど使用されません。

グループ内の追加ユーザー

このフィールドには、このユーザー グループにどの追加ユーザーが含まれているかが表示され、/etc/group 内の追加グループの表示と同じです。ファイル。

5./etc/login.defs ファイル

/etc/login.defs ファイルは、ユーザーの作成時にユーザーを構成するために使用されます。ユーザー UID と GID の範囲、ユーザーの有効期限、パスワードの最大長などの指定など、いくつかの基本プロパティのデフォルト設定を行います。

このファイルのユーザーデフォルト設定は、root ユーザーには無効であることに注意してください。また、このファイルの設定が /etc/passwd ファイルおよび /etc/shadow ファイル内のユーザー情報と競合する場合、システムは /etc/passwd および /etc/shadow ファイルで有効になります。

読者は、vim /etc/login.defs コマンドを使用してファイルの内容を表示できます。表 1 に、ファイル内の各オプションの詳細な説明を示します。

ユーザーを作成するとき、システムはディレクトリ /var/spool/mail にユーザー メールボックスを作成します。たとえば、lamp ユーザーのメールボックスは /var/spool/mail/lamp です。 パスワードの有効期間、99999 は 1970 年 1 月 1 日からのパスワードの有効日数であり、273 年に相当し、常にパスワードが有効であることがわかります。 最後のパスワード変更から、ユーザーが再度パスワードを変更できるようになるまでの最小日数を示します。デフォルト値は 0 です。 パスワードの最小長を指定します。デフォルトは 5 文字以上です。ただし、ログイン時のユーザー認証が PAM モジュールに置き換えられたため、このオプションは有効になりません。 システムが有効期限が近づいているユーザー パスワードの受け渡しを開始するまでの日数を指定します。デフォルトは 7 日です。 最小 UID として 500 を指定します。これは、ユーザーを追加するときのデフォルトの UID が 500 から始まることを意味します。 UID 550 のユーザーを手動で指定した場合、500 から 549 までの UID が使用されていない場合でも、次に作成されるユーザーの UID は 551 から始まることに注意してください。 特定のユーザーの最大 UID は 60000 です。 最小 GID として 500 を指定します。これは、グループを追加するとき、グループの GID が 500 から始まることを意味します。 最大ユーザー GID は 60000 です。 ユーザーの作成時にユーザーのホーム ディレクトリを作成するかどうかを指定します。Yes は作成することを意味し、No は作成しないことを意味します。デフォルトは Yes です。 ユーザーのホーム ディレクトリのアクセス許可は、デフォルトでは 077 に設定されています。 ユーザーを削除する際に、ユーザーグループも同時に削除するかどうかを指定します。準備として、ユーザーの初期グループを削除することを指します。この項目のデフォルト値は「yes」です。 ユーザー パスワードに使用される暗号化ルールを指定します。デフォルトでは SHA512 が使用されます。これは新しいパスワード暗号化モードです。元の Linux では DES または MD5 暗号化のみを使用できました。 関連する推奨事項: 「Linux ビデオ チュートリアル 」
表 1 /etc/login.defs ファイルの内容
設定項目 意味############ MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME はい
UMASK 077
USERGROUPS_ENAB はい
ENCRYPT_METHOD SHA512

以上がLinux システムのアカウント ファイルは何で構成されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。