更新软件包后, CentOS 使用都正常,但是为啥 tty 控制台登录不进去呢?

2018-08-24 14:35:36 +08:00
 AllOfMe

因为需要安装的软件包对 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 这里先谢谢各位了!

1882 次点击
所在节点    Linux
2 条回复
julyclyde
2018-08-26 10:11:50 +08:00
不应该调试 /bin/login 而应该调试 getty 及其自进程树
getty、login、shell 这三个都是 exec 的关系,不是 fork 关系。shell 退出之后,init 会把 getty 重新启动

如果没出现错误,大概是你的 shell “完成,退出”了
AllOfMe
2018-08-26 12:23:13 +08:00
@julyclyde 嗯嗯,谢谢回答!我去尝试一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/482880

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX