Linux相关知识

这篇博客详细解析了Linux系统中管理用户账户的两个核心文件:/etc/passwd和/etc/shadow。/etc/passwd文件包含用户名、加密密码、用户ID和组ID等信息,而/etc/shadow文件则存储更安全的密码哈希,以及密码修改相关的时间限制。密码字段由$分隔,包括加密算法代号、盐值和密文。Linux使用crypt()函数进行密码加密,盐值长度根据加密算法自动确定。
摘要由CSDN通过智能技术生成

1./etc/passwd 文件详解

传统上,Linux把加密(哈希)的密码保存在/etc/passwd文件中,passwd文件的格式如下:

smithj:x:561:561:Joe Smith:/home/smithj:/bin/bash

共7个字段,由":"分隔, 各字段的含义如下:

  1. smithj,用户名,最多8个字符。区分大小写,通常全部小写
  2. 加密后的密码,空表示没有密码;“x"表示密码保存在/etc/shadow文件中
  3. 数字用户id。这是由adduser脚本分配的。Unix使用此字段以及以下组字段来标识哪些文件属于用户
  4. 数字组idRed Hat以独特的方式使用组id,以增强文件安全性。通常,组id将与用户id匹配
  5. 用户全名。不确定这个字段的最大长度是多少,但请尽量保持合理(少于30个字符)
  6. 用户的主目录。通常为/home/username(例如/home/smithj)。所有用户的个人文件、网页、邮件转发等都将存储在此处。用户的shell
  7. 通常设置为“/bin/bash”,以提供对bash shell脚本的访问

2. /etc/shadow文件详解

shadow文件的每一行定义一个用户,共九个字段,格式如下:

{用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修改间隔(防止修改口令,如果时限未到,将恢复至旧口令):{口令最大修改间隔}:{口令失效前的警告天数}:{账户不活动天数}:{账号失效天数}:{保留}

root:$6$4rSdQWBy$970A61Zc6.5b1Ioh2Sl3dj/EbpKChilvqPsQz3h78YhcYnVoPQ9xXZeABlRLpfFsgTX0dlegSpC56LLqCPje41:0:0:99999:7:::

3. 密码字段的格式:

密码字段分为三个部分,由$分隔:  $加密算法代号$盐值$密文

① 密码算法

序号

加密算法代号

算法

1

$1$

MD5

2

$2a$

Blowfish

3

$2y$

Blowfish

4

$5$

SHA-256

5

$6$

SHA-512

② 盐值

盐值的位数与加密算法有关,以SHA-512为例,盐值是一个Base64的随机串,串的长度是8~16的随机数。

Linux中加密由crypt()函数实现,crypt()会调用crypt_make_salt()函数生成盐值。盐值长度是一个个随机数,由shadow_random(8,16)函数产生。因此,Linux中加密密码的盐值的位数由程序自动生成,是不可配的。除非修改源码。

crypt_make_salt()--->gensalt(salt_size)---->l64a(random())生成Base64编码的,长度为salt_size的盐值字符串。

③ 密文

盐值+密码(明文)通过加密算法得到的字符串(Base64)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值