• Linux用户密码文件/etc/shadow相关


    (1).密码文件

    [root@xuexi ~]# head -3 /etc/shadow
    root:$6$kcgcu794R0VP3fDL$aYN8XUbtWvZ4QQtT2xVW.N2CgE3YLPdtnprAAtKZUgNdq8itUJEN6NoYQDarLUevcDCWrxMVId8b18ujwST1b0::0:99999:7:::
    bin:*:17632:0:99999:7:::
    daemon:*:17632:0:99999:7:::

      内容格式如下,用冒号隔开,可以用man 5 shadow查看帮助:

    name

    登录名称,必须是有效用户名

    password

    已加密密码,分为三个部分用$分隔,第一部分表示用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希

    哈希算法:1表示MD5;6表示SHA-512;5表示SHA-256

    注意:在密码前一个感叹号(!)代表该用户被锁定,可以在机器上转到改用户,但无法远程

    注意:密码是两个感叹号(!),表示没有设置密码

    lastchanage

    最近一次更改密码的日期,以距离1970/1/1的天数表示

    min-age

    密码更改后多少天内不能再次更改。0表示可以随时更改

    max-age

    密码过期时间,必须在期限内修改密码

    warning

    警告期,警告用户再过多少天密码将过期。0表示不提供警告

    inactive

    宽限期,密码过期多少天仍然可以使用

    expire

    帐号过期时间,以距离1970/1/1的天数表示。0或空字符表示永不过期

    blank

    预留字段

      注意1:两个不同的用户使用相同的密码,加密过后哈希值不同,因为salt不同。

    实例展示:

    [root@xuexi ~]# useradd t1
    [root@xuexi ~]# useradd t2
    [root@xuexi ~]# passwd t1    //交互式修改密码
    更改用户 t1 的密码 。
    新的 密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    [root@xuexi ~]# echo 123456 | passwd --stdin t2    //非交互式修改密码
    更改用户 t2 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    [root@xuexi ~]# tail -2 /etc/shadow
    t1:$6$wS6JOIbp$gqRhtxnFFpB5W6yptxXVEOlvqaRFtgEBBTqJoiWTrml2Uz73/hGgePtJF8E8B0ppsXMalSBMTJgRUoMBIGPjJ.:17902:0:99999:7:::
    t2:$6$mZnceAg8$t8l5AEXGs7iUhl98Zxx5hlKVn1qhOzlKsOMbgMuSTrp7HRsyRPgi12Dk5jRdQL/F3zPxMK7XhcdaU.MkgcRE91:17902:0:99999:7:::

             注意2:两段加密互换等于互换密码,不影响登录。

             注意3:salt是passwd命令自动生成的。

    (2).配置文件/etc/login.defs

    egrep是grep的高级用法等同于grep -e,-v选项表示取反值,"^$|^#"中^表示以什么开头,$表示空行,完整意思表示以空行或#开头。

    [root@xuexi ~]# egrep -v "^$|^#" /etc/login.defs
    MAIL_DIR        /var/spool/mail
    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS   0
    PASS_MIN_LEN    5
    PASS_WARN_AGE   7
    UID_MIN                  1000
    UID_MAX                 60000
    SYS_UID_MIN               201
    SYS_UID_MAX               999
    GID_MIN                  1000
    GID_MAX                 60000
    SYS_GID_MIN               201
    SYS_GID_MAX               999
    CREATE_HOME     yes
    UMASK           077
    USERGROUPS_ENAB yes
    ENCRYPT_METHOD SHA512
    

    详细说明:

    CREATE_HOME(boolean) 指示是否应该为新用户默认创建主目录。此设置并不应用到系统用户,并且可以使用命令行覆盖。

    GID_MAX(number),GID_MIN(number) useradd,groupadd或newusers创建的常规组的组ID范围。GID_MIN默认值1000(CentOS6为500),GID_MAX默认值60000。

    MAIL_DIR(string)邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。

    MAIL_FILE(string) 定义用户邮箱文件的位置(相对于主目录)。

    注意:MAIL_DIR和MAIL_FILE变量由useradd,usermod和userdel用于创建、移动或删除用户邮箱。如果MAIL_CHECK_ENAB设置为yes,它们也被用于定义MAIL环境变量。

    MAX_MEMBERS_PER_GROUP(number) 每个组条目的最大成员数。达到最大值时,在/etc/group开始一个新条目(行)(使用同样的名称,同样的密码,同样的GID)。默认值是0,意味着组中的成员数没有限制。此功能(分割组)允许限制组文件中的行长度。这对于确保NIS组的行比长于1024字符。如果要强制这个限制,可以使用25。

    注意:分割组可能不受所有工具的支持(甚至在Shadow工具集中)。如果没有必要你不应该使用这个变量。

    PASS_MAX_DAYS(number) 一个密码可以使用的最大天数。如果密码比这个旧,将会强迫更改密码。如果不指定,就假定为-1,这会禁用此限制。

    PASS_MIN_DAYS(number) 两次更改密码时间最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定就假定为-1,将会禁用此限制。

    PASS_WARN_AGE(number) 密码过期之前鬼畜警告的天数。0表示在过期当天警告,负值表示不警告。如果没有指定,不会给出警告。

    SYS_GID_MAX(number),SYS_GID_MIN(number) useradd、groupadd或newusers创建的系统组的组ID范围。SYS_GID_MIN默认101(CentOS6为201),SYS_GID_MAX默认GID_MIN-1。

    SYS_UID_MAX(number),SYS_UID_MIN(number) useradd或newusers创建的系统用户的用户ID的范围。SYS_UID_MIN默认101(CentOS6为201),SYS_UID_MAX默认UID_MIN-1。

    UID_MAX(number),UID_MIN(number) useradd或newusers创建的普通用户的用户ID的范围。UID_MIN默认1000(CentOS6为500),UID_MAX默认60000。

    UMASK(number) 文件模式创建掩码初始化为此值。如果没有指定,掩码初始化为022。Useradd和newusers使用此掩码设置它们创建的用户主目录的模式。也被login用于指定用户的初始umask。注意,此掩码可以被用户的GECOS行覆盖(当设置了QUOTAS_ENAB时),也可以被带K指示符的limits(5)定义的限制值覆盖。

    USERGROUPS_ENAB(boolean) 如果uid和gid相同,用户名和主用户名也相同,使非root组的组掩码位和属主位相同(如:022->002,077->007)。如果设置为yes,组中也没有成员了,userdel将移除此用户组,useradd创建用户时,也会创建一个同名的默认组。

     (3).扩展命令chage

    chage [选项] 登录名

    1)选项

    -m 密码更改后多少天内不能再次更改。0表示可以随时更改
    -M 密码过期时间,必须在期限内修改密码
    -W 警告期,警告用户再过多少天密码将过期。0表示不提供警告
    -E 帐号过期时间,以距离1970/1/1的天数表示。0或空字符表示永不过期
    -d最近一次更改密码的日期,以距离1970/1/1的天数表示。为0表示强制在下次登录时更新密码
    -I宽限期,密码过期多少天仍然可以使用
    -l 显示用户当前设置信息

    2)实例

    强制用户下次修改密码

    [root@xuexi ~]# chage -d 0 t1
    [root@xuexi ~]# ssh t1@192.168.0.10
    The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established.
    ECDSA key fingerprint is SHA256:r8TKDXZGzdWkjGnXtfb/YGwCTYViIh9PvJxjrkA4hXU.
    ECDSA key fingerprint is MD5:99:ea:1a:2c:c3:81:de:6c:95:b2:86:c1:d0:7e:60:96.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.0.10' (ECDSA) to the list of known hosts.
    t1@192.168.0.10's password:
    You are required to change your password immediately (root enforced)
    Last login: Sun Jan  6 18:42:35 2019 from 192.168.0.99
    WARNING: Your password has expired.
    You must change your password now and login again!
    更改用户 t1 的密码 。
    为 t1 更改 STRESS 密码。
    (当前)UNIX 密码:
    新的 密码:
    

      

  • 相关阅读:
    系统综合实践第一次实践作业
    个人作业——软件工程实践总结作业
    个人作业——软件评测
    软件工程实践第五次作业
    Structured Multimodal Attentions for TextVQA
    文字版三国杀开发
    OO Unit 4 Summary
    TextCaps竞赛总结
    Multi-Source Pointer Network
    Pointer Generator Network
  • 原文地址:https://www.cnblogs.com/diantong/p/10229900.html
Copyright © 2020-2023  润新知