zoukankan      html  css  js  c++  java
  • linux下的/etc/passwd 和/etc/shadow

    [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

    迫使用户更改密码

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

    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 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 ~]# 




  • 相关阅读:
    codevs1076 排序
    codevs1075 明明的随机数
    codevs1205 单词翻转
    codevs1204 寻找子串位置
    codevs2235 机票打折
    codevs1206 保留两位小数
    codevs1203 判断浮点数是否相等
    codevs1202 求和
    codevs1201 最小数和最大数
    Static Sushi AtCoder
  • 原文地址:https://www.cnblogs.com/double12gzh/p/10166210.html
Copyright © 2011-2022 走看看