Linux中的/etc/shadow文件

时间:2020-03-05 15:29:59  来源:igfitidea点击:

在本教程中,我们将了解文件/etc/shadow的形成以及为什么使用它。
文件/etc/shadow可以通过系统用户的"root"只读。

在Linux中,创建用户(使用UserAdd命令)诸如用户名,UID,GID等的帐户信息,存储在系统文件/etc/passwd和安全帐户信息(如加密密码)中,最后更改,到期日期等存储在一个名为/etc/shadow的另一个文件中。

每个系统用户都有一个条目/etc/shadow文件。
每行有8个字段,每个线被"冒号:"分开。
示例条目如下。

test:$CQoPk7Zh0xDLmeGD9m4aF/ciIlC.:14425:0:99999:7:::

/etc/shadow文件格式

最初,加密密码存储在"/etc/passwd"中,该密码必须是世界可读的,以便系统可以将用户ID映射到用户名,以便用户可以找到关于彼此的信息,然后人们意识到这一点是一个安全问题。
因此,创建了一个新的文件/etc/shadow以存储加密密码,该密码只能由root才读,也包含其他信息,即/etc/passwd文件不支持与用户的帐户和密码相关的其他信息,例如。
G。
当密码最后更改时,它将到期时。
此文件隐藏系统的普通用户的哈希,同时保持它们可用于用户身份验证目的。
往下看

$cat /etc/shadow
cat: /etc/shadow: Permission denied

我们可以看到我们无法将文件的内容视为普通用户。
我们需要有权查看其内容。
作为"/etc/passwd"文件,它还包含一些行,并使用冒号(:)来分隔每行代表特定用户的字段。

# cat /etc/shadow
root:$Q0FVxjNp$ZS7ilmu2ILfZApk1mJz4f48X6m:17262:0:14600:14::: 
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
linoadmin:!!:17289:0:99999:7:::

/etc/shadow文件有九个字段,可以表示如下

低于每个字段的细节:

  • 用户名或者登录:此第一个字段表示登录系统时应使用的用户名。
  • 密码:第二个字段以加密格式存储密码。在第一个字段(root :)指示加密类型之后,$XX $初始(上面的示例$6 $)。如上所述,星号*表示,此帐户不能用于登录和!!表示用户没有密码,因此他没有密码创建。
  • 最后一个密码更改的日期(螺发打声):第三个字段表示上次密码更改的日期,表示为自1970年1月1日起的天数。0值意味着用户应该在下次登录时更改密码在系统中。
  • 最短天:第四个字段存储用户可以更改密码的最小天数。我们将无法在此之前更改密码。
  • 最长天:此第五字段表示密码有效的最大天数。之后,用户被迫更改密码。
  • 警告密码段:第六字段表示用户将在我们将收到关于密码到期的警告通知的天数,并且必须更改。
  • 不活动时段:第七字段表示密码到期后的天数,之后将禁用帐户。当空时,此字段表示不活动的执行。
  • 到期日期:第八字段表示自1970年1月1日以来的日期,该帐户被禁用
  • 保留:第九字段保留用于将来使用。

##/etc/shadow文件权限

这是Linux上的第二个重要文件,因为它存储密码,因此其访问和修改可能非常关键。
这为什么它的许可是"400",它仅提供给所有者的读取权限。
它还可以防止错误的修改。
我们可以看到以下此文件的默认权限:

# ls -l /etc/shadow
-r-------- 1 root root 1078 Jan 12 23:55 /etc/shadow

可以使用不同的方法加密密码,该方法被一个是作为$符号的第一个字符之后的ID识别。
下面我们可以具有ID的值和相应的加密技术,它表示:

  • 1:MD5
  • 2a:Blowfish
  • 5:SHA-256
  • 6:SHA-512

加密密码如何工作

用于加密密码字段的算法技术上被称为单向哈希函数。
这是一种易于在一个方向上计算的算法,但非常难以在反向方向上计算。

当用户被提供密码时,它用称为盐的随机生成的值进行编码。
这意味着任何特定密码都可以以4096种不同的方式存储。
然后将盐值与加密密码一起存储。

当用户登录并提供密码时,首先从存储的加密密码检索盐。
然后,提供的密码与salt值进行编码,然后与加密密码进行比较。
如果密码匹配,则用户已被认证。

因此,始终建议选择强控字母,数字和特殊符号的密码,并避免选择字典单词。