博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下的/etc/passwd 和/etc/shadow
阅读量:4607 次
发布时间:2019-06-09

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

[root@dltasvm001jeguan ~]# cat /etc/shadowroot:$6$NFqoUq77$Q1Fyyf.seeQEMSUamP4t/znmHW5/FaAJ9x.EgknCp1r8EObMJoRgDrBQvljhGzwo1Bp2ehe4woAv.p6YKoxTz1:16297:0:99999:7:::......rdb:lsslss:16836:7:90:7::: [root@dltasvm001jeguan ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bash......rdb:x:1002:1003::/home/rdb:/bin/bash
Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,存放着用户的密码哈希值。它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

其中shadow中存放的密码密文格式如下:
$id$salt$encrypted
其中id是指使用的哈希算法:
可取如下值:
    ID  | Method
--------------------------
     1   | MD5
    2a   | Blowfish (not in mainline glibc; added in some
         | Linux distributions)
     5   | SHA-256 (since glibc 2.7)
     6   | SHA-512 (since glibc 2.7)
salt:是使用上面hash算法对密码进行hash的一个干扰值。
encrypted: 这个值即 密码的hash, 但不是直接的hash("passwd"),而是hash("passwd+salt")后,再经过编码。
实际应用:
1. 在有shadow文件的前提下暴力破解(也只能暴力破解)用户密码
2. 实现自己的passwd命令。某种场景下是很有用的(在云计算中,可以方便的为使用同一模板的linux虚拟机生成不同密码)

想查看某一个用户(比如rdb)的密码到期失效信息,运行下面这个命令。请注意:只有在你检查你自己之外的其他任何用户的密码有效期信息时,才需要根用户权限

[root@dltasvm001jeguan ~]# chage -l rdbLast password change					: Feb 05, 2016Password expires					: May 05, 2016Password inactive					: neverAccount expires						: neverMinimum number of days between password change		: 7Maximum number of days between password change		: 90Number of days of warning before password expires	: 7

迫使用户更改密码

如果你想迫使用户更改其密码,请使用下面这个命令。

 
  1. $ sudo chage -d0 <user-name

最初,“-d <N>”选项应该被设成密码的“有效期”(自密码上一次更改时间1970年1月1日以来的天数)。所以,“-d0”表明该密码是在1970年1月1日更改的,这实际上让当前密码到期失效,从而让密码在下一次登录时被更改。

让当前密码到期失效的另一个办法是通过passwd命令。

 
  1. $ sudo passwd -e <user-name

上述命令具有与“chage -d0”同样的功效,让用户的当前密码立即到期失效。

现在,再次检查用户的密码信息,你会看到:
[root@dltasvm001jeguan ~]# chage -l rdbLast password change                    : password must be changedPassword expires                    : password must be changedPassword inactive                    : password must be changedAccount expires                        : neverMinimum number of days between password change        : 7Maximum number of days between password change        : 90Number of days of warning before password expires    : 7[root@dltasvm001jeguan ~]#

转载于:https://www.cnblogs.com/double12gzh/p/10166210.html

你可能感兴趣的文章
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>
poj 1753 Flip Game
查看>>
在深信服实习是怎样的体验(研发测试岗)
查看>>
Linux免密码登陆
查看>>
SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
查看>>
Socket & TCP &HTTP
查看>>
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
python_封装redis_hash方法
查看>>
《windows程序设计》获取窗口尺寸(05)
查看>>
【重点突破】——Canvas技术绘制音乐播放器界面
查看>>
监控级联时各个层的PoE交换机怎么选?
查看>>
存储过程
查看>>