博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shadow密码文件
阅读量:4356 次
发布时间:2019-06-07

本文共 1810 字,大约阅读时间需要 6 分钟。

登录Linux会要求输入用户名和密码。通常本地文件中会存储一份用户密码,并与用户输入对比,如果相同就允许用户登录。起初用户密码存储与/etc/passwd中,但由于/etc/passwd必须供所有用户读取,因此为了避免密码破译,unix系统将加密后的密码存储于/etc/shadow中,仅供超级用户可读。

/etc/shadow中密码格式:

$id$salt$encrypted

  id表示hash算法。起初密码用DES算法加密,单随着DES加密破解难度的降低,已用其他加密算法替代DES。在shadow文件中,密码字段如果以“$”打头,则表示非DES加密,如:

$1$2eWq10AC$NaQqalCk3

  即表示非DES加密密码,而$1$表示使用了基于MD5的加密算法。

$2a$04$NZJWn7W2skvQRC5lW3H7q.ZTE8bz4xbC

  $2a$表示Blowfish算法。常见的标识与算法:

ID  算法
$1$  MD5
$2a$ Blowfish
$5$ SHA-256
$6$ SHA-512

 

/etc/passwd文件的格式:

username:passwd:UID:GID:full_name:directory:shell

  

从shadow文件中摘录数行:

root:$1$TCVDVaiT$JC7TbKjvIZpIprdehWFH/1:15157:0:99999:7:::bin:*:15157:0:99999:7:::daemon:*:15157:0:99999:7:::

  /etc/shadow文件的每行由9个字段组成,以“:”作为字段分隔符。每个字段的说明:

1. 用户名

2. 加密后的密码。如果密码是“*”或“!”,则表示不会用这个帐号来登录(通常是一些后台进程)

3. 密码最后修改时间。 从1970年1月1日起计算的天数。

4. 不可修改密码的天数。 如果是0,则表示可以随时修改密码。如果是N,表示N天后才可修改密码。

5. 密码可以维系的天数。如果设置为N,表示N天后必须更新密码。设置为99999通常表示无需更新密码。

6. 在密码必须修改前的N天,就开始提示用户需要修改密码。

7. 密码过期的宽限时间。

8. 帐号失效时间。也是UNIX时间戳格式。

9. 保留字段。

 

 

pwconv系列命令

pwconv命令从/etc/passwd生成/etc/shadow。它将密码从passwd文件中抽取出来放到shadow文件中。

运行pwunconv命令则会关闭shadow功能,并把加密密码转移到passwd中。

系统启动时,就默认开启了pwconv

1 ls -l /etc/passwd /etc /shadow2 -rw-r--r-- 1 root root   2342 Mar 29 18:55 /etc/passwd3 -rw-r----- 1 root shadow 1393 Mar 29 18:55 /etc/shadow

取root用户对比两个文件的记录:

1 $ cat /etc/shadow | grep ^root2 root:x:0:0:root:/root:/bin/bash3 4 $ cat /etc/shadow|grep ^root5 root:$6$0fa52kBa$5rQfmjjrmvVmepfQylZINajIUp/cTWi9GjdgONbYVRPlstFbjD54DXUgA2yE5QxdWm0ZX4.z238E/IPv0yAxY0:15946:0:99999:7:::

关闭shadow:

1 $ pwunconv

此时shadow文件消失。

再次查看passwd文件:

1 cat /etc/passwd | grep ^root2 root:$6$0fa52kBa$5rQfmjjrmvVmepfQylZINajIUp/cTWi9GjdgONbYVRPlstFbjD54DXUgA2yE5QxdWm0ZX4.z238E/IPv0yAxY0:0:0:root:/root:/bin/bash

可以看到shadow中的加密密码被转移到了passwd中。

运行pwconv,即可恢复shadow文件

转载于:https://www.cnblogs.com/Genesis-007/p/5368760.html

你可能感兴趣的文章
视频人脸检测——OpenCV版(三)
查看>>
php获取来访者在搜索引擎搜索某个关键词,进入网站
查看>>
物联网架构成长之路(8)-EMQ-Hook了解、连接Kafka发送消息
查看>>
2018-2019-1 20165234 20165236 实验二 固件程序设计
查看>>
IDEA的GUI连接数据库写入SQL语句的问题总结
查看>>
Xpath在选择器中正确,在代码中返回的是空列表问题
查看>>
leecode第一百九十八题(打家劫舍)
查看>>
【BZOJ 1233】 [Usaco2009Open]干草堆tower (单调队列优化DP)
查看>>
07-3. 数素数 (20)
查看>>
写一个欢迎页node统计接口Py脚本(邮件,附件)-py
查看>>
计算两个日期之间的天数
查看>>
Android关于buildToolVersion与CompileSdkVersion的区别
查看>>
袋鼠云日志,日志分析没那么容易
查看>>
缓存穿透 缓存雪崩 缓存并发
查看>>
MySQL表的操作
查看>>
A Brief Introduction to the Design of UBIFS
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>
Linux下启动/关闭Oracle
查看>>