Linux串口密码无法登录-问题分析

1、问题原因
在设备激活后,有时候会出现使用密码无法登录串口或telnet的现象。这个问题的根本原因是在使用passwd和shadow命令修改密码时,会生成中间文件,并在修改完成后删除该文件。然而,如果在修改密码的过程中发生了断电,导致中间文件未能被删除,下次再尝试修改密码时就会失败,使用新密码也无法登录串口。

2、解决方法
要解决这个问题,我们可以在设备启动时删除passwd和shadow的中间文件。这些中间文件的命名一般是passwd+和shadow+,但是如果passwd是一个链接文件,链接到其他名称的可执行文件,那么生成的中间文件名就不是passwd+和shadow+了,而是链接的可执行文件名加上"+"符号。

这里要强调pawwdd可执行文件的实体名称。我们需要确保删除了中间文件,以确保下次修改密码时能够成功,并且能够使用新密码登录串口。

3、如何判断系统已经设置过串口密码
背景:有时候希望设备没有激活的情况下,先随机生成一个密码,保证有方法能够进入串口,激活后根据用户设置的密码登录串口。
为了把激活状态跟随机生成密码解耦,可以通过检查是否已经设置过密码来决定是否随机生成密码。
下面是一个简单的检查密码示例:

root@NVTEVM:/$cat checkpwd.sh 
#!/bin/sh

# 检查用户是否已设置密码
check_password_set() {
	#/etc/shadow并不是唯一的,不同的系统可能是/etc/passwd
    encrypted_password=$(grep "^$1:" /etc/shadow | cut -d: -f2)
    if [ -n "$encrypted_password" ]; then
        echo "用户 $1 已设置密码"
    else
        echo "用户 $1 未设置密码"
    fi
}

# 检查 root 用户密码
check_password_set "root"

# 检查其他用户密码
check_password_set "username1"
check_password_set "username2"

# 添加其他用户检查...
root@NVTEVM:/$./checkpwd.sh 
用户 root 已设置密码
用户 username1 未设置密码
用户 username2 未设置密码

如果你对上面的内容感兴趣,我建议你看一下我的另外一篇文章
1、Linux下passwd与shadow的关系

2、添加链接描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值