因为需要安装的软件包对 glibc 版本有要求,于是将 glibc 的版本 2.12 升级到 2.15 。
在升级过程中没有异常,启动数据库、服务器、FTP、SFTP、SSH 都可以正常使用,但是发现在实体机的终端 tty 无法成功登录进去,重启好几遍也无法成功登录进去。
在 Centos 里没有配置禁止 root 登录或禁止某个 tty 登录的配置
经过 google,整理了一下,终端 tty 登录的常规流程可能如下:
1, 首先调用了 /sbin/mingetty,请求输入用户名
2, 然后将程序控制权转到 /bin/login
3, 鉴权成功,就进入主目录,否则就提示密码错误
可是我感觉现在这个情况有点奇怪:
1, 当我用户名密码正确时,不进入主目录,而是光标又闪回了原始位置要求输入用户名,且没有任何错误提示
2, 当我输入错误密码时,会提醒我密码错误,请重新输入
3, SSH,SFTP 等调用到鉴权的程序却又没有问题,可以完美登录进去,登录进去之后随意 su 用户也没有错误提示
4, 检查了一下 /var/log/secure.log ,发现只有 SSH,SFTP 等鉴权的日志,却没能看到 tty 登录成功(失败)的任何提示
5, 想尝试通过 gdb 调试一下 /bin/login,结果 SSH 掉线了,可能是因为 gdb 调试过程中和 SSH 有冲突,掉线之后依旧可以登录 SSH
请教一下各位 V 友,这个 tty 登录控制台会闪回的问题的原因可能会出在哪里呢?我已经备份了升级软件之前的 rpm 列表、/usr/lib64、/lib64 等所有文件,暂时不考虑重装。LZ 这里先谢谢各位了!
1
julyclyde 2018-08-26 10:11:50 +08:00 1
不应该调试 /bin/login 而应该调试 getty 及其自进程树
getty、login、shell 这三个都是 exec 的关系,不是 fork 关系。shell 退出之后,init 会把 getty 重新启动 如果没出现错误,大概是你的 shell “完成,退出”了 |