Linux用户密码文件/etc/shadow相关详解程序员

(1).密码文件

[[email protected] ~]# 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不同。

实例展示:

[[email protected] ~]# useradd t1 
[[email protected] ~]# useradd t2 
[[email protected] ~]# passwd t1    //交互式修改密码 
更改用户 t1 的密码 。 
新的 密码: 
无效的密码: 密码少于 8 个字符 
重新输入新的 密码: 
passwd:所有的身份验证令牌已经成功更新。 
[[email protected] ~]# echo 123456 | passwd --stdin t2    //非交互式修改密码 
更改用户 t2 的密码 。 
passwd:所有的身份验证令牌已经成功更新。 
[[email protected] ~]# 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选项表示取反值,”^$|^#”中^表示以什么开头,$表示空行,完整意思表示以空行或#开头。

[[email protected] ~]# 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)实例

强制用户下次修改密码

[[email protected] ~]# chage -d 0 t1 
[[email protected] ~]# ssh [email protected] 
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. 
[email protected]'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 密码: 
新的 密码: 

  

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/2807.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论