Linux系统中通过/etc/shadow文件更改root默认密码和密码过期时间

背景

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为影子文件;和/etc/passwd是配对的。

/etc/passwd 文件是明文,该文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。

/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

shadow文件介绍

# cat /etc/shadow
root:$1$nuEyDCs5$GCYfKEBCBF7GYVvr09Cdn1:10933:0:99999:7:::
daemon:*:10933:0:99999:7:::
bin:*:10933:0:99999:7:::
sys:*:10933:0:99999:7:::
sync:*:10933:0:99999:7:::
mail:*:10933:0:99999:7:::
www-data:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
dbus:*:::::::
sshd:*:::::::
ftp:*:::::::

文件中每行代表一个用户,使用 ":" 作为分隔符,每行用户信息被划分为 9 个字段。每个字段的含义如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

字段     含义
用户名(账户)  用户登录系统时使用的用户名
加密后的密码

1.若删除此密码,那么登录就不需要密码了

2.这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,一些嵌入式设备依然采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。

3.所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。

最后一次修改时间 

1.用户最后一次修改密码的天数(距离1970年1月1日有多少天,空字段表示密码年龄功能被禁用);

2.不能填0,如果填0会导致最大时间间隔不生效,进而导致密码过期;

3.这里显示 10933 天,也就是说,此 root 账号在 1970 年 1 月 1 日之后的第 10933 天修改的 root 用户密码。

lu@host:~/Desktop$ date -d "1970-01-01 10933 days"
1999年 12月 08日 星期三 00:00:00 CST
最小时间间隔  两次修改密码之间的最小天数,空字段或0表示没有最小时间限制
最大时间间隔

1. 密码保持有效的最多天数,这些天之后,用户必须更改密码; 这些天之后,密码仍然可用。用户将会在下次登录的时候被要求更改密码。

2. 空字段表示没有最大密码年龄,没有密码警告时间段,没有密码禁用时间段。

3. 该字段的默认值为 99999,也就是 273 年,可认为是永久生效。

4. 如果最大密码年龄小于最小密码年龄,用户将会不能更改密码。

警告时间

1. 密码过期之前,提前警告用户的的天数。

2. 空字段或者 0 表示没有密码警告期,密码过期后立即失效。

3.如果是 -1,则代表密码永远不会失效。

账号闲置时间 

1. 密码过期(查看上边的密码最大时间间隔)后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)。

2. 空字段表示没有强制密码过期。

失效时间 密码失效的绝对天数。可以在不删除用户的情况下锁定用户,不让其登录
标志

一般不使用


   
    
   
  
    
    
   

        
 

修改root账号密码和有效期

一般linux系统默认root是没有密码的,需要启动的时候用户自己设置,这里介绍一种不用passwd指令添加或者修改root密码的方式

在root账户的记录中,用“:”符号分隔开的第二个字段通常是密码字段,将该字段的内容替换为你想要设置的密码的散列值,可以使用以下命令生成散列值:

openssl passwd -1 "your-password-here"  

将“your-password-here”替换为你想要设置的密码即可。

例如:
lu@host:~/Desktop$ openssl passwd -1 "123456"
$1$RMF6ypDd$ObgxhxQQ79nXzjoLEyuTg0

保存/etc/shadow文件,退出编辑器,并重启Linux系统以使更改生效。

修改前(如果当前root没有密码该字段是空):

# cat /etc/shadow
root::10933:0:99999:7:::
daemon:*:10933:0:99999:7:::
bin:*:10933:0:99999:7:::
sys:*:10933:0:99999:7:::
sync:*:10933:0:99999:7:::
mail:*:10933:0:99999:7:::
www-data:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
dbus:*:::::::
sshd:*:::::::
ftp:*:::::::

修改后

# cat /etc/shadow
root:$1$RMF6ypDd$ObgxhxQQ79nXzjoLEyuTg0:10933:0:99999:7:::
daemon:*:10933:0:99999:7:::
bin:*:10933:0:99999:7:::
sys:*:10933:0:99999:7:::
sync:*:10933:0:99999:7:::
mail:*:10933:0:99999:7:::
www-data:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
dbus:*:::::::
sshd:*:::::::
ftp:*:::::::

此时再次登陆密码就是使用新的密码了。

你可能感兴趣的:(Linux,嵌入式,linux,服务器,运维,shadow)