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 密码: 新的 密码: