由root用户无法图形化登录的问题引发的lib动态库引导顺序修改
问题描述:
开机启动没问题,进入图形化登录界面,root用户无法登录(密码正确),其他用户能正常登录。
遇事不要慌,看看日志先。
- 快捷键
Ctrl+Alt+F2
进入终端,root用户登录;
- 查看messages日志
vim /var/log/messages
从日志信息看sshd服务报错,OpenSSH服务启动失败。
- 接下来,我们看看服务启动失败的原因:
systemctl status sshd
sshd -t
OpenSSL:是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份*.OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。
OpenSSL中的Libcrypto:
- 根据提示信息,进入/home/d500/openssl/,看看OpenSSL_1.0.2版本是否存在
- 我们找一找系统OpenSSL,和/home/d5000/openssl/目录下做对比
whereis openssl
cd /usr/lib
ll | grep libcry
ll | grep libssl
- 该如何解决?
方法一:重新链接引导lib*.so.1.0.2k版本,考虑到修改/home/d5000用户的OpenSSL文件中libcrypto.so.10,不建议使用;
方法二:系统本地有一个OpenSSL,为何使用的是D5000用户下的OpenSSL?查看系统OpenSSL引用顺序是否被修改(库文件引导顺序)
库文件引导顺序:
- 编译目标代码时指定的动态库搜索路径;
- 环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
- 配置文件/etc/ld.so.conf中指定的动态库搜索路径;
- 默认的动态库搜索路径/lib;
- 默认的动态库搜索路径/usr/lib。
- 查看/etc/ld.so.conf 文件,
vim /etc/ld.so.conf
惊喜发现,原来修改了lib库的引导顺序的,导致系统直接访问/home/d5000/下的OpenSSL.。而不是引用系统默认的OpenSSL,将第二行注释掉。
ldconfig
用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,
搜索出可共享的动态链接库(格式如lib.so),
进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
- 快捷键Ctrl+Alt+F1进入图形化界面,查看root用户能否正常登录?能。
- root用户能正常使用图形化界面登录后,判断一下sshd服务能否正常启动?是可以的。
systemctl status sshd
问题解决啦,你是不是还有很多不解之处?
1. 是什么原因造成root用户登录不了图形化界面,而其他用户普通用户却可以呢?
3. sshd服务启动失败和图形化界面登录失败有什么联系吗?为什么会受到影响?
libssl是OpenSSL的一部分,它支持TLS(SSL和TLS协议),并且取决于libcrypto;
OpenSSL主要功能:SSL协议库、应用程序以及密码算法库。
libcrypto文件用到的软件包glibc主要功能如下图: 12)login 虚拟终端系统的管理,及系统的安全访问
主要是因为libcrypto文件找不着,OpenSSL服务启动失败,导致终端系统登录不上,ssl协议库和应用程序sshd服务起不来。