Maison  >  Article  >  Opération et maintenance  >  De quoi est composé le fichier de compte du système Linux ?

De quoi est composé le fichier de compte du système Linux ?

青灯夜游
青灯夜游original
2022-05-13 16:25:039554parcourir

Le fichier de compte se compose de 5 parties : 1. "/etc/passwd", le fichier de configuration utilisateur du système, qui stocke les informations de base de tous les utilisateurs du système 2. "/etc/shadow", qui stocke les mots de passe ; des utilisateurs dans le système Informations ; 3. "/ect/group", le fichier de configuration du groupe d'utilisateurs, stocke toutes les informations du groupe d'utilisateurs, etc.

De quoi est composé le fichier de compte du système Linux ?

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Le fichier de compte du système Linux comporte 5 composants :

  • Fichier /etc/passwd

  • /etc/shadow fichier

  • /ect/group file

  • /etc/gshadow Fichier

  • /etc/login.defs fichier

1, /etc/passwd fichier

/etc/passwd est un fichier de configuration utilisateur système, qui stocke les informations de base de tous les utilisateurs dans le système et tous les utilisateurs peuvent effectuer des opérations de lecture sur ce fichier.

Tout d'abord, ouvrons ce fichier pour voir ce qu'il contient. Exécutez la commande comme suit :

[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
...省略部分输出...

Vous pouvez constater que le contenu du fichier /etc/passwd est très régulier, et chaque ligne d'enregistrement correspond à un utilisateur.

Les lecteurs peuvent se demander : comment se fait-il qu'il y ait autant d'utilisateurs par défaut dans le système Linux ? La grande majorité de ces utilisateurs sont des utilisateurs nécessaires au fonctionnement normal du système ou du service. Ces utilisateurs sont souvent appelés utilisateurs du système ou pseudo-utilisateurs. Les utilisateurs du système ne peuvent pas être utilisés pour se connecter au système, mais ils ne peuvent pas être supprimés, car une fois supprimés, les services ou programmes qui dépendent de ces utilisateurs ne pourront pas s'exécuter normalement, ce qui entraînera des problèmes au système.

De plus, chaque ligne d'informations utilisateur est divisée en 7 champs avec ":" comme délimiteur. La signification de chaque champ est la suivante :

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

Ensuite, je présenterai ces champs un par un.

Username

Username est une chaîne de caractères représentant l’identité de l’utilisateur.

Comme mentionné précédemment, le nom d'utilisateur est uniquement destiné à la commodité de la mémoire utilisateur. Le système Linux utilise l'UID pour identifier les identités des utilisateurs et attribuer des autorisations aux utilisateurs. La relation correspondante entre le nom d'utilisateur et l'UID est définie dans le fichier /etc/passwd.

Mot de passe

"x" signifie que cet utilisateur a un mot de passe, mais ce n'est pas un vrai mot de passe. Le vrai mot de passe est stocké dans le fichier /etc/shadow (introduction détaillée dans la section suivante).

Au début d'UNIX, ce qui était enregistré ici était la véritable chaîne de mot de passe cryptée. Cependant, comme tous les programmes peuvent lire ce fichier, il est très facile de voler des données utilisateur.

Bien que le mot de passe soit crypté, il peut également être déchiffré par force brute.

Par conséquent, le système Linux place désormais la véritable chaîne de mot de passe cryptée dans le fichier /etc/shadow. Ce fichier ne peut être parcouru et utilisé que par l'utilisateur root, garantissant ainsi au maximum la sécurité du mot de passe.

Il convient de noter que bien que "x" ne représente pas le vrai mot de passe, il ne peut pas être supprimé. Si "x" est supprimé, le système pensera que l'utilisateur n'a pas de mot de passe, ce qui entraînera uniquement la saisie du mot de passe. nom d'utilisateur sans saisir le mot de passe. Vous pouvez vous connecter (vous ne pouvez vous connecter que sans mot de passe, pas à distance), sauf circonstances particulières (telles que le déchiffrement du mot de passe de l'utilisateur), ce qui n'est bien sûr pas réalisable.

UID

UID, qui est l'ID utilisateur. Chaque utilisateur possède un UID unique et le système Linux utilise l'UID pour identifier différents utilisateurs.

En fait, l'UID est un nombre compris entre 0 et 65 535. Les nombres dans différentes plages représentent différentes identités d'utilisateur.

GID

Le nom complet est "Group ID", appelé "Group ID", qui représente le numéro d'identification de groupe du groupe initial de l'utilisateur. Les concepts de groupes initiaux et de groupes supplémentaires doivent être expliqués ici.

Le groupe initial signifie que l'utilisateur dispose des autorisations pertinentes de ce groupe d'utilisateurs lors de la connexion. Chaque utilisateur ne peut avoir qu'un seul groupe initial. Généralement, le nom de groupe identique au nom d'utilisateur de l'utilisateur est utilisé comme groupe initial de l'utilisateur. Par exemple, si nous ajoutons manuellement la lampe utilisateur, lors de la création de la lampe utilisateur, le groupe de lampes sera créé en tant que groupe initial de l'utilisateur de la lampe.

Groupes supplémentaires signifie que les utilisateurs peuvent rejoindre plusieurs autres groupes d'utilisateurs et disposer des autorisations de ces groupes. Chaque utilisateur ne peut avoir qu'un seul groupe initial. En plus du groupe initial, les utilisateurs peuvent rejoindre d'autres groupes d'utilisateurs. Ces groupes d'utilisateurs sont des groupes supplémentaires pour cet utilisateur. Il peut y avoir plusieurs groupes supplémentaires et les utilisateurs peuvent disposer d'autorisations pour ces groupes supplémentaires.

Par exemple, en plus du groupe de lampes initial, j'ai ajouté l'utilisateur de la lampe au groupe des utilisateurs. Ensuite, l'utilisateur de la lampe appartient à la fois au groupe des lampes et au groupe des utilisateurs, où la lampe est le groupe initial et les utilisateurs sont un groupe supplémentaire. .

Bien sûr, les identités du groupe initial et des groupes supplémentaires peuvent être modifiées, mais nous ne modifions pas le groupe initial dans notre travail, uniquement les groupes supplémentaires, car modifier le groupe initial perturbe parfois la logique de l'administrateur.

Il est à noter que l'ID vu dans le quatrième champ du fichier /etc/passwd est le groupe initial de cet utilisateur.

Informations descriptives

Ce champ n'a pas d'utilité importante, il est juste utilisé pour expliquer la signification de cet utilisateur.

Annuaire d'accueil

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

例如,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 文件中的组名相对应。

组密码

Pour la plupart des utilisateurs, le mot de passe du groupe n'est généralement pas défini, ce champ est donc souvent vide, mais parfois il s'agit de "!", ce qui signifie que le groupe n'a pas de mot de passe de groupe et n'a pas d'administrateur de groupe.

Administrateur de groupe

Du point de vue d'un administrateur système, la fonction la plus importante de ce fichier est de créer un administrateur de groupe. Alors, qu’est-ce qu’un administrateur de groupe ?

Étant donné qu'il y a trop de comptes dans le système Linux et que le super-administrateur root peut être occupé, lorsqu'un utilisateur souhaite rejoindre un groupe, root peut ne pas être en mesure de répondre à temps. Dans ce cas, s'il existe un administrateur de groupe, il peut alors ajouter l'utilisateur au groupe qu'il gère, évitant ainsi les problèmes de root.

Cependant, en raison des outils actuels tels que sudo, cette fonction des administrateurs de groupe est rarement utilisée.

Utilisateurs supplémentaires dans le groupe

Ce champ affiche les utilisateurs supplémentaires qui se trouvent dans ce groupe d'utilisateurs, ce qui est le même que l'affichage du groupe supplémentaire dans le fichier /etc/group.

5./etc/login.defs fichier

/etc/login.defs est utilisé pour définir les paramètres par défaut de certains attributs de base de l'utilisateur lors de la création d'un utilisateur, tels que la spécification de la plage des paramètres de l'utilisateur. UID et GID. Délai d'expiration de l'utilisateur, longueur maximale du mot de passe, etc.

Il convient de noter que la configuration utilisateur par défaut de ce fichier n'est pas valide pour l'utilisateur root. Et, lorsque la configuration de ce fichier entre en conflit avec les informations utilisateur dans les fichiers /etc/passwd et /etc/shadow, le système prendra effet dans /etc/passwd et /etc/shadow.

Les lecteurs peuvent utiliser la commande vim /etc/login.defs pour afficher le contenu du fichier. Le tableau 1 fournit une explication détaillée de chaque option du fichier.

Contenu du fichier /etc/login.defs du tableau 1
              Éléments de configuration               Signification
              MAIL_DIR /var/spool/mail             Lors de la création d'un utilisateur, le système créera une boîte aux lettres utilisateur dans le répertoire /var/spool/mail. Par exemple, la boîte aux lettres de l'utilisateur lamp est /var/spool/mail/lamp.
              PASS_MAX_DAYS 99999               Période de validité du mot de passe, 99999 est le nombre de jours pendant lesquels le mot de passe est valide depuis le 1er janvier 1970, ce qui équivaut à 273 ans. On peut comprendre que le mot de passe est toujours valide.
              PASS_MIN_DAYS 0             Indique le nombre minimum de jours après lequel l'utilisateur peut à nouveau modifier le mot de passe depuis le dernier changement de mot de passe. La valeur par défaut est 0.
              PASS_MIN_LEN 5             Spécifiez la longueur minimale du mot de passe, qui par défaut est d'au moins 5 caractères. Cependant, maintenant que l'authentification des utilisateurs a été remplacée par le module PAM lors de la connexion, cette option ne prend plus effet.
              PASS_WARN_AGE 7             Spécifie le nombre de jours avant que le système commence à transmettre les mots de passe utilisateur sur le point d'expirer. La valeur par défaut est 7 jours.
              UID_MIN 500               Spécifiez un UID minimum de 500, ce qui signifie que lors de l'ajout d'un utilisateur, l'UID par défaut commence à 500. Notez que si vous spécifiez manuellement un utilisateur avec un UID de 550, le prochain utilisateur créé aura un UID commençant à 551, même si les UID compris entre 500 et 549 ne sont pas utilisés.
              UID_MAX 60000               L'UID maximum pour un utilisateur donné est de 60 000.
              GID_MIN 500               Spécifiez un GID minimum de 500, ce qui signifie que lors de l'ajout d'un groupe, le GID du groupe commence à 500.
              GID_MAX 60000 ​​​​​​ Le GID utilisateur maximum est de 60 000.
              CREATE_HOME oui             Spécifiez s'il faut créer le répertoire personnel de l'utilisateur lors de la création d'un utilisateur. Oui signifie le créer, non signifie ne pas le créer. La valeur par défaut est oui.
              UMASK 077             Les autorisations pour le répertoire personnel de l'utilisateur sont définies par défaut sur 077.
              USERGROUPS_ENAB oui             Spécifiez s'il faut supprimer le groupe d'utilisateurs en même temps lors de la suppression de l'utilisateur. Pour la préparation, cela fait référence à la suppression du groupe initial de l'utilisateur. La valeur par défaut de cet élément est oui.
              ENCRYPT_METHOD SHA512               Spécifiez la règle de cryptage utilisée pour les mots de passe des utilisateurs. SHA512 est utilisé par défaut. Il s'agit du nouveau mode de cryptage des mots de passe. Le Linux d'origine ne pouvait utiliser que le cryptage DES ou MD5.

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Linux est-il livré avec vim ?Article suivant:Linux est-il livré avec vim ?