嵌入式通过串口连接如何屏蔽自动登录

一、问题描述

1、实验环境
  • Hisilicon HI3559AV100
  • 设备正常启动,所有功能正常
2、实验目的
  • 为了防止别人通过终端随便登录到设备,所以需要在通过telnet和串口连接到设备的时候输入密码
3、所遇问题及操作方法
  • 操作方法:
  • 通过telnet连接设备后命令行正常提示输入用户名和密码,但是通过串口连接后无需验证直接进入
  • 问题现象:
  • 通过串口连接后自动登录并有一条提示信息:Auto login as root … 如图
    Auto login as root
  • 期望现象:
    在这里插入图片描述

二、解决办法

1、修改rootfs/inittab文件
  • 该修改是解决串口自动登录的问题
  • 将-n后面的部分去掉
# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I "Auto login as root ..."
::respawn:/sbin/getty -L ttyS000 115200 vt100

在这里插入图片描述

2、修改busyBox源码busybox-1.26.2\loginutils\getty.c
  • 该修改是解决串口连接后,第一次登录只需要输入用户名就可以跳过密码验证进入系统
  • 在getty_main函数中最后修改,将-f换为–:
//BB_EXECLP(G.login, G.login, "-f", logname, (char *)0);
BB_EXECLP(G.login, G.login, "--", logname, (char *)0);

在这里插入图片描述

三、修改解释

1、解决串口自动登录的问题
  • inittab文件是init进程的配置文件,init是linux的0号进程,在该进程中会决定系统启动后需要做什么,怎么做等等。
  • respawn:这个字段是不管何时终止重新进入某个进程,就比如我将命令终端退出了,再次进入就执行某某
  • /sbin/getty:这个是打开终端,然后默认调用/bin/login进行登录
  • -L:表示程序不等待DCD信号。DCD信号是串口通讯时的一个信号,表示Data Carrier Detected,一般是modem连通之后会发送回来的一个信号,表示数据载波OK,可以继续通信了。但是,在现在的串口通信中,特别是嵌入式开发的时候,开发板上的串口,DCD这个pin一般都不会连线的,一般只连tx/rx/cts/rts四根线就OK了。
  • -n:不提示输入用户名,也就是自动通过root进行登录(还需要结合login -f root才能算完全自动登录)
  • -I:打印信息
  • respawn:/sbin/getty 就是重新进入后执行getty
    在这里插入图片描述
2、解决只要输入用户名跳过密码验证问题
  • 查看login的帮助信息可以知道,-f参数的意思就是跳过指定用户的密码校验,所以将getty_main中执行login的地方传入的-f参数换掉就可以了
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘星燎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值