您想知道 Linux 如何有效地管理多用户环境吗?在本文中,TipsMake.com 将解释 Linux 如何存储和管理用户密码和登录信息。
发现文件/etc/passwd
当用户输入用户名和密码时,Linux会在'/etc'目录下的某些文件中检查输入的密码。
/etc/passwd 文件是存储用户信息最重要的文件之一。
这个文件中最近的item对应用户'carbon'。有多个信息字段,用冒号隔开。
carbon
: 此项对应的用户名。x
:表示用户存在密码。但是,密码存储在文件 '/etc/shadow' 中。 如果不是 x 而是显示图标 ! ,这表示密码不存在。1000
: 该用户的用户 ID。1000
: 包含此用户的群组的群组 ID。carbon, , ,
:表示全名、电话等多个信息字段。此处未提供电话号码。/home/carbon
:分配给该用户的主目录位置。/bin/bash
: 默认 shell 分配给这个用户。
请为存储的电话号码创建另一个用户。用户 'pluto' 使用 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:::
同样在这个文件中,每个条目都有多个用冒号分隔的字段:
pluto
: 此项对应的用户名。$6$JvWfZ9u.$yGFIqOJ.
:用户哈希密码与所使用的哈希算法信息一起存储。此外,盐值与明文密码一起用于生成哈希密码。
{ 明文密码, salt}->哈希密码
$
符号用于分隔3个字段。
$6 $JvWfZ9u.$yGFIqOJ.
$6
:使用哈希算法。以下是潜在哈希算法的列表。$1
: MD5$2a
: 河豚$2y
: Eksblowfish$5
:SHA-256$6
:SHA-512
$JvWfZ9u.
:盐值。- <代码>$yGFIqOJ. :密码是散列的。
生成的哈希值存储为用户的加密密码。盐值对每个用户都是唯一的。即使两个用户拥有相同的明文密码,使用单个盐也会产生唯一的哈希值。
以下是本节的剩余字段,
18283
:表示自 1970 年 1 月 1 日起密码最后一次更改的天数0
:此字段用于指示密码可以更改的天数。值 0 表示可以随时更改密码。99999
:此字段表示必须更改密码的天数。值 99999 表示用户可以保留密码的时间。7
:如果密码设置为过期,这些字段表示提示用户密码过期的天数。:::
另外三个字段也是本节的一部分,尽管它们在这里是空的。第一个数字表示密码过期后等待的天数,超过后该帐户将被禁用。第二个数字表示自 1970 年 1 月 1 日以来帐户已被禁用的天数。第三个字段保留供将来使用。空字段表示此用户的当前密码尚未过期,并且不会很快过期。
最后 7 个字段与密码有效性相关,统称为 ' 信息 Aging Policy' 信息持有量。
'Password Aging Policy'对应的默认值在文件'/etc/login.defs'中指定。 这些值可以通过change
命令为用户更改。
群信息呢?
用户信息和密码存放在'/etc/passwd'和'/etc/shadow'文件中。同理,组信息保存在文件'/etc/group'中。
上面突出显示的是属于用户'carbon'和'pluto'的组。创建用户时在 Linux 中,该用户会立即分配到与用户名同名的组中。
群组成员还可以共享群组密码以进行与该群组相关的活动。 x的值表示该组的密码信息将在文件'/etc/gshadow'中。
但是,访问'/etc/gshadow'仅限于root用户。
root用户可以查看'/etc/gshadow'的条目,类似于'/etc/shadow'。查看 'carbon' 组的条目,我们可以看到第二个字段的值为 ! ,表示该组的密码不存在。
当用户想登录时,使用该用户在'/etc/shadow'中的salt值找到输入密码的哈希值。它然后将其与存储的哈希值进行比较。如果值匹配,则授予用户访问权限。
0 评论