拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Linux 如何存储和管理用户密码

Linux 如何存储和管理用户密码

白鹭 - 2022-01-14 1982 0 0

您想知道 Linux 如何有效地管理多用户环境吗?在本文中,TipsMake.com 将解释 Linux 如何存储和管理用户密码和登录信息。

发现文件/etc/passwd

当用户输入用户名和密码时,Linux会在'/etc'目录下的某些文件中检查输入的密码。

/etc/passwd 文件是存储用户信息最重要的文件之一。

这个文件中最近的item对应用户'carbon'。有多个信息字段,用冒号隔开。

  1. carbon : 此项对应的用户名。
  2. x :表示用户存在密码。但是,密码存储在文件 '/etc/shadow' 中。 如果不是 x 而是显示图标 ! ,这表示密码不存在。
  3. 1000 : 该用户的用户 ID。
  4. 1000 : 包含此用户的群组的群组 ID。
  5. carbon, , , :表示全名、电话等多个信息字段。此处未提供电话号码。
  6. /home/carbon :分配给该用户的主目录位置。
  7. /bin/bash : 默认 shell 分配给这个用户。

请为存储的电话号码创建另一个用户。用户 'pluto' 使用 adduser 命令添加到系统中。

Linux如何存储和管理用户密码的图1
使用 adduser 命令添加用户

再回看etc/passwd文件,我们可以看到用户'pluto'的完整信息。强>

每当创建用户时,都会在/etc/adduser.conf中指定默认的主目录和shell值。

创建的用户的用户ID从1000开始,一直到59999。

'Carbon'用户只能通过cat命令查看/etc/passwd文件中的条目。

只有root用户可以写入文件。其他用户只能读取该文件。因为每个人都可以阅读这个文件,所以在这里存储密码并不理想。相反,密码存储在另一个名为 '/etc/shadow' 的文件中。

探索文件/etc/shadow

现在,让我们看看用户'carbon''pluto'的密码是否存储在文件'/etc/shadow'。

查看'/etc/shadow'的文件权限,可以看到只有root用户可以读写文件。此外,只有 'shadow' 组的成员可以读取该文件。事实上,'shadow' 组是空的,但在语法上是该文件所必需的。

以root登录,我们可以看到'/etc/shadow'的最后10行。'/etc/中的每个条目passwd' 在此文件中有相应的条目。格式如下:

 pluto:$6$JvWfZ9u.:18283:0:99999:7::: 

同样在这个文件中,每个条目都有多个用冒号分隔的字段:

  1. pluto : 此项对应的用户名。
  2. $6$JvWfZ9u.$yGFIqOJ. :用户哈希密码与所使用的哈希算法信息一起存储。此外,盐值与明文密码一起用于生成哈希密码。
 { 明文密码, salt}->哈希密码 

$符号用于分隔3个字段。

 $6 $JvWfZ9u.$yGFIqOJ. 
  1. $6 :使用哈希算法。以下是潜在哈希算法的列表。
    1. $1 : MD5
    2. $2a : 河豚
    3. $2y : Eksblowfish
    4. $5:SHA-256
    5. $6:SHA-512
  2. $JvWfZ9u.:盐值。
  3. <代码>$yGFIqOJ. :密码是散列的。

生成的哈希值存储为用户的加密密码。盐值对每个用户都是唯一的。即使两个用户拥有相同的明文密码,使用单个盐也会产生唯一的哈希值。

以下是本节的剩余字段,

  1. 18283 :表示自 1970 年 1 月 1 日起密码最后一次更改的天数
  2. 0 :此字段用于指示密码可以更改的天数。值 0 表示可以随时更改密码。
  3. 99999 :此字段表示必须更改密码的天数。值 99999 表示用户可以保留密码的时间。
  4. 7 :如果密码设置为过期,这些字段表示提示用户密码过期的天数。
  5. ::: 另外三个字段也是本节的一部分,尽管它们在这里是空的。第一个数字表示密码过期后等待的天数,超过后该帐户将被禁用。第二个数字表示自 1970 年 1 月 1 日以来帐户已被禁用的天数。第三个字段保留供将来使用。空字段表示此用户的当前密码尚未过期,并且不会很快过期。

最后 7 个字段与密码有效性相关,统称为 ' 信息 Aging Policy' 信息持有量。

'Password Aging Policy'对应的默认值在文件'/etc/login.defs'中指定。 这些值可以通过change命令为用户更改。

群信息呢?

用户信息和密码存放在'/etc/passwd''/etc/shadow'文件中。同理,组信息保存在文件'/etc/group'中。

Linux如何存储和管理用户密码的图2
关于用户的组信息

上面突出显示的是属于用户'carbon''pluto'的组。创建用户时在 Linux 中,该用户会立即分配到与用户名同名的组中。

群组成员还可以共享群组密码以进行与该群组相关的活动。 x的值表示该组的密码信息将在文件'/etc/gshadow'中。

但是,访问'/etc/gshadow'仅限于root用户。

root用户可以查看'/etc/gshadow'的条目,类似于'/etc/shadow'。查看 'carbon' 组的条目,我们可以看到第二个字段的值为 ! ,表示该组的密码不存在。

当用户想登录时,使用该用户在'/etc/shadow'中的salt值找到输入密码的哈希值。它然后将其与存储的哈希值进行比较。如果值匹配,则授予用户访问权限。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *