linux下的/etc/passwd 和/etc/shadow
2016-02-05 11:20
579 查看
[root@dltasvm001jeguan ~]# cat /etc/shadow root:$6$NFqoUq77$Q1Fyyf.seeQEMSUamP4t/znmHW5/FaAJ9x.EgknCp1r8EObMJoRgDrBQvljhGzwo1Bp2ehe4woAv.p6YKoxTz1:16297:0:99999:7::: ...... rdb:lsslss:16836:7:90:7::: [root@dltasvm001jeguan ~]# cat /etc/passwd root: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}中的字符,则对应的用户不能登录。
海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
其中shadow中存放的密码密文格式如下:
$id$salt$encrypted
其中id是指使用的哈希算法:
可取如下值:
ID | Method
--------------------------
1 | MD5
海姹网(网址:http://www.seacha.com),标签:Linux 用户密码的加密方式, 加密,用户,shadow
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 rdb Last password change : Feb 05, 2016 Password expires : May 05, 2016 Password inactive : never Account expires : never Minimum number of days between password change : 7 Maximum number of days between password change : 90 Number of days of warning before password expires : 7
迫使用户更改密码
如果你想迫使用户更改其密码,请使用下面这个命令。
$ sudo chage -d0 <user-name>
最初,“-d <N>”选项应该被设成密码的“有效期”(自密码上一次更改时间1970年1月1日以来的天数)。所以,“-d0”表明该密码是在1970年1月1日更改的,这实际上让当前密码到期失效,从而让密码在下一次登录时被更改。
让当前密码到期失效的另一个办法是通过passwd命令。
$ sudo passwd -e <user-name>
上述命令具有与“chage -d0”同样的功效,让用户的当前密码立即到期失效。
现在,再次检查用户的密码信息,你会看到:
[root@dltasvm001jeguan ~]# chage -l rdb Last password change : password must be changed Password expires : password must be changed Password inactive : password must be changed Account expires : never Minimum number of days between password change : 7 Maximum number of days between password change : 90 Number of days of warning before password expires : 7 [root@dltasvm001jeguan ~]#
相关文章推荐
- Linux中使用grep命令搜索文件名及文件内容的方法
- LINUX增加并管理用户
- 安装Linux时“分区”入门操作详解
- read Linux
- Linux脚本参数之if fi
- 全面解析Linux的grep命令中正则表达式的用法
- linux下启动、登陆 mysql 出现ERROR 2002(HY000):can't connect to local mysql server
- linux的mount(挂载)命令详解
- LINUX修改eth*名称
- linux下使用yum安装mysql详解
- linux下 yum 安装mysql和卸载
- Linux下怎么查看当前系统的版本
- 虚拟机下CentOS 6.5配置IP地址的三种方法
- 使用kdb和kgdb调试Linux内核(2)
- Linux进程间通信——使用共享内存
- Linux下查询CPU 缓存的工具
- CentOS使用CDROM作为yum的源
- 分享个最新的linux内核4.5-rc2(已经编译成deb包)
- CentOS 6.5下源码安装MySQL 5.6
- Qt for linux 安装