linux账号密码体系理解(centos7.9实验)

本文详细介绍了Linux系统中用户密码的管理,包括/etc/passwd和/etc/shadow文件的结构,以及密码加密算法如SHA512的工作原理。通过实例展示了如何使用doveadm、openssl和python的crypt库生成密码密文,并提供了交互式和非交互式修改密码的方法。同时,讨论了密码加密的复杂性和安全性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

账号密码相关文件

/etc/passwd # 用户账号信息 /etc/shadow # 用户的密码信息,此文件是有隐藏属性的,一定程度上保证了密码的安全 /etc/login.defs #用户密码相关配置,ENCRYPT_METHOD SHA512 此变量标明的密码加密的方式

centos7.9 默认的密码加密hash算法是 SHA512 但 密码并不是通过简单的算法,而是通过复杂的一系列逻辑

所以我们通过sha512 算出来的密码和shadow文件中的不一样

技巧:命令行获取目前密码使用的加密算法

authconfig --test| grep hash

/etc/passwd文件

每个用户一行,每行使用 ":" 分隔,共7个字段

  1. 账号名称
  2. 密码:早期密码直接放这里,但是这个文件所有程序都能读取,密码容易被窃取,所以所有密码数据改放到了 /etc/shadow,这里就是一个x
  3. UID:用户标识
  4. GID:用户组标识
  5. 用户信息说明
  6. 主文件目录
  7. shell,用户登录后会取得一个shell来和系统内核通信,完成用户操作

/etc/shadow 文件

每个用户一行,每行使用 ":" 分隔,共9个字段

  1. 账号名称
  2. 密码:加密之后的密码 注意:在此字段前面加上 ! 或 * 改变了密文长度 ,会让密码暂时失效,因为根据用户输入密码 加密后和此处的密码不相等
  3. 最近改动密码的日期:从1970-01-01 到改动日期的天数
  4. 密码不可被更改的天数:修改后多少天里不能再修改
  5. 密码修改更改的天数:隔多长时间修改修改密码
  6. 密码更改期限前的警告天数:密码过期前多少天开始通知用户
  7. 密码过期后,宽限时间:密码过期后多少天之内还能用
  8. 账号失效日期
  9. 保留字段

 

详解密码字段

以 $ 分隔,分为三段

  1. 加密方式:1:md5加密,密文长度22 5:sha256加密,密文长度43 6:sha512加密,密文长度86 4:手动上传password字符串
  2. 盐值:hash加密时使用的salt
  3. 密文

密码密文生成方式

密码密文并不是简单地使用算法生成的,是有一系列复杂的运算的,由于linux是开源的,所以有一些工具帮我们实现了这个功能,使用passwd 等命令修改密码时,系统会自动生成密码密文

目前:admin用户的密码是:#PK1UxTBDZ

salt:$6$6FeAs/Nsgr3/$

1、dovecot包中的doveadm命令的子命令 doveadm pw

doveadm pw -s SHA512-CRYPT -p '#PK1UxTBDZ' 
{SHA512-CRYPT}$6$KSUkKq1yJ7.EwwCk$IdOteWBK/zOXmLPaYM9VY7mXNw.LBm2Trj3YNpNk7ZFiAAyiMYA/yDJzKsL1UN0kFgEg.yMJiRLe5fMnwlkFd1 
# 盐值变了,没找到这个命令加盐的方式,所以密文和上面不一样,但是用上面的密文替换 /etc/shadow 中的密文,是完全可以使用的,系统是从/etc/shadow 中取盐值的

2、openssl 中的passwd子命令

默认是使用unix标准的加密方式去加密的,但只允许8个字符(应该有参数去改变),这个密文放在 /etc/shadow 也是可以用的

# 用md5 加密 
openssl passwd -1 '#PK1UxTBDZ' $1$ovun1wSt$SwYNeqgzJhkKyteY/nfvq/

3、python 自带的crypt库

import crypt 
crypt.crypt('#PK1UxTBDZ', '$6$6FeAs/Nsgr3/$') 
#结果:可以看到,和/etc/shadow中的密文字段完全一样 '$6$6FeAs/Nsgr3/$8uz9LiP0A6SnEC1KvJKYcdxJi/QaI1b4t2QieaWxS9oatx7SBV1myg7mxH4jLXFr/C.TBTI8xiHYb5Q11tx1w0'

 

修改密码

1、交互式修改

passwd admin # 密码中可以包含特殊字符

2、直接修改

echo "admin:123456asd" | chapasswd      # 密码中有些特殊字符的组合可能造成最后的密文和正确的密文不一样,chpasswd 会将密码进行加密然后存到 /etc/shadow, 如果有特殊字符,chpasswd读取可能有问题,
echo "admin:123456asd" | chapasswd  -m    # chpasswd 加密密码时,使用md5算法
echo "admin:123456asd" | chapasswd  -c sha256   # chpasswd 加密密码时,使用sha256算法
echo "admin:密文" | chapasswd -e        # 此时密码已经是加密的,只需要chpasswd 将密文存到  /etc/shadow,密文中的特殊字符,chpasswd读取可能有问题
echo "123456asd" | passwd --stdin admin   # 特殊字符可能会导致修改的密码和你输入的密码不一致 

 

 

 

### 如何在已有系统的电脑上全新安装 CentOS 7.9 并替换原有操作系统 #### 准备工作 为了确保顺利安装,在开始之前需备份重要数据。准备一张可启动的CentOS 7.9 安装介质,可以是USB闪存盘或DVD。 #### 创建启动介质 创建启动U盘可以通过多种工具完成,如Rufus(Windows下)、Etcher(跨平台)。下载ISO镜像文件并写入到选定的存储设备中[^1]。 #### 设置BIOS/UEFI 进入计算机BIOS/UEFI设置界面,调整引导顺序使系统优先从所制作的启动盘加载。保存更改退出重启机器。 #### 开始安装流程 当通过光驱或USB驱动器成功启动后,屏幕会显示欢迎页面,选择“Install CentOS 7”。之后进入到图形化安装向导: - **语言和地区**:挑选适合的语言环境配置。 - **日期和时间**:设定正确的地理位置与时区信息。 - **键盘布局**:指定输入法类型。 - **软件包选择**:可根据需求勾选额外组件;对于大多数情况,默认选项已足够满足基本用途。 - **磁盘分区方案**:这是关键环节之一,因为要替代现有的操作系统,所以建议采用自动分配空间模式,这将会清除硬盘上的全部现存资料,请提前做好相应防范措施以防意外丢失珍贵文档。 #### 配置网络与主机名 如果联网,则能在线获取最新更新以及后续服务支持。同时定义独一无二的计算机名称以便识别管理。 #### 用户账户建立 创建root超级管理员密码和其他常规登录账号供日常操作使用。 #### 结束语 一旦上述各项参数都确认无误点击“Begin Installation”,等待进度条走完即宣告整个重装作业结束。最后移除外部媒介装置按提示正常开机即可体验全新的Linux发行版带来的改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值