[Linux]树莓派:纯命令行界面下已设置用户自动登录,仍需要输入密码

自动登录一般是不需要密码的,即使已经通过passwd手动修改了密码。

这种情况非常稀有,以至于全网几乎找不到关于此情况的解决方法。。。

0x00:原因

未知。

0x01:现象

已修改过/etc/systemd/system/getty.target.wants/getty@tty1.service的ExecStart参数:

 

0x02:解决办法

很简单,将ExecStart参数改成这样:

ExecStart=-/sbin/agetty -o '-p -f root' -n -a root --noclear %I $TERM

保存,重启即可。

0x03:解决方法原理

问题可能出在agetty/login上,因为本人曾经修改过SHELL(修改/etc/passwd)但没有效果。

从根源入手,gettyService的agetty提供了这样几个参数:

-o, --login-options <opts> : options that are passed to login
-n, --skip-login : do not prompt for login
-a, --auto-login <user> : login the specified user automatically
==================
-o指定login参数,其实就是执行:
login <opts>
-n使agetty跳过登录程序,直接进入shell
-a指定自动登录的用户

发现仅凭-n,-a行不通时,login参数登场

这里就用到了agetty的-o选项

login提供了这样的伪命令:

login [-p] -f username
# 在manual中是这么说的:
-f : do not perform authentication, user is preauthenticated
================
-f跳过用户验证

因此,可以在agettyService里这么写:

ExecStart=-/sbin/agetty -o '-p -f root' -n -a root --noclear %I $TERM

至此,问题解决,

agetty,login都指定了自动登录相关的选项。

 

转:https://zhuanlan.zhihu.com/p/86297547

posted @ 2021-05-30 18:45  m0w3n  阅读(731)  评论(0编辑  收藏  举报