首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google云计算引擎: Centos 8上的"dnf升级“后sudo崩溃

Google云计算引擎: Centos 8上的"dnf升级“后sudo崩溃
EN

Stack Overflow用户
提问于 2022-10-27 18:45:11
回答 1查看 42关注 0票数 0

我与之合作的公司正在开发一个基于Laravel的web应用程序,使用Google平台基础设施。前端VM是安装了Apache服务器的Centos8操作系统。似乎一个开发人员运行了一个相当大规模的"dnf升级“,其中包括:内核、openssl、kerberos和其他软件包。升级之后,似乎ldconfig已经失去了理智:

代码语言:javascript
复制
[developer@webserver ~]$ sudo su - root
sudo: error in /etc/sudo.conf, line 19 while loading plugin "sudoers_policy"
sudo: unable to load /usr/libexec/sudo/sudoers.so: /lib64/libldap-2.4.so.2: undefined symbol: EVP_md4, version OPENSSL_1_1_0
sudo: fatal error, unable to load plugins 

"dnf“或”rpm“等其他命令也是如此:

代码语言:javascript
复制
[developer@webserver ~]$ rpm
rpm: symbol lookup error: /lib64/librpmio.so.8: undefined symbol: EVP_md2, version OPENSSL_1_1_0

经过一些调查之后,我发现指定LD_LIBRARY_PATH变量的相同命令正在工作:

代码语言:javascript
复制
[developer@webserver ~]$ LD_LIBRARY_PATH=/lib64 rpm
RPM version 4.14.3
Copyright (C) 1998-2002 - Red Hat, Inc.
This program may be freely redistributed under the terms of the GNU GPL
...

...of课程,我不能用"sudo“命令做同样的技巧。

重要的事实是,VM仍然在运行,而且从来没有重新启动过(稍后我会为为什么这么说而欢呼)。

主要问题是我们不能使用根帐户,因为"sudo“不起作用,默认情况下,Google使用公共密钥身份验证作为耳聋方法(本地用户具有由finally..at生成的随机密码)。所以实际上,我甚至不能做一个"dnf重新安装“来尝试修复这些问题

我担心,一旦重新启动,每个服务都会因为不正确的依赖库路径而停止工作,所以我没有重新启动,而是创建了一个基于VM的映像,然后基于该映像创建了一个新的VM。正如我所想的:一旦启动了新的VM,每个服务都停止工作。我能够通过GCP网络接口的串行控制台读取日志。

一段片段:

代码语言:javascript
复制
...
Oct 27 20:20:30 webserver google_oslogin_nss_cache[783]: /usr/bin/google_oslogin_nss_cache: /lib64/libjson-c.so.4: no version information available (required by /usr/bin/google_oslogin_nss_cache)
Oct 27 20:20:30 webserver NetworkManager[778]: /usr/sbin/NetworkManager: symbol lookup error: /lib64/libldap-2.4.so.2: undefined symbol: EVP_md4, version OPENSSL_1_1_0
Oct 27 20:20:30 webserver google_oslogin_nss_cache[783]: /usr/bin/google_oslogin_nss_cache: symbol lookup error: /lib64/libldap-2.4.so.2: undefined symbol: EVP_md4, version OPENSSL_1_1_0
Oct 27 20:20:30 webserver sssd[771]: ldb: unable to dlopen /usr/lib64/ldb/modules/ldb/ldap.so : /lib64/libldap-2.4.so.2: undefined symbol: EVP_md4, version OPENSSL_1_1_0
...

使用Google官方文档,我找到了VM属性的“启动脚本”部分,它可以在每次启动时启动,并且可以用来“更改”用户的密码。我知道,默认情况下,所有vm都禁用了根访问,因此我将其添加到vm的“自动化”脚本中:

代码语言:javascript
复制
#! /bin/bash
echo 'developer:PASSWORD' | chpasswd
echo 'root:PASSWORD' | chpasswd

一旦重新启动,我尝试登录使用“串行控制台”选项的网页界面,但没有运气。我还使用了journalctl (作为普通用户)在日志中找到一些东西.但什么都没有。我认为这是"google_oslogin_nss_cache“错误的结果--没有办法运行该脚本。

在互联网上搜索时,我发现有人可以使用"gcloud计算ssh“命令直接以"root”身份登录。因此,我尝试使用同一个项目的另一个VM登录,同时使用我的google帐户用户和根user...but,这也是...no运气的方式。(我忘记提到我的google帐户有“项目所有者”角色,所以实际上我拥有所有必要的权限)

还有另一种方法来重置"root“密码而不用"sudo”,或者我必须从一开始就重新安装VM?

我很抱歉长时间的explanation....hope,一切都很清楚

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-29 12:47:58

所以..。实际上,这个问题被分为两个不同的问题:

  1. 恢复"root“帐户的唯一可能方法是停止VM、分离引导磁盘、在新VM上挂载引导磁盘、挂载文件系统和修改用户。一旦引导磁盘重新连接到原始的VM..you可以使用修改后的帐户
  2. 第二个问题是通过升级openssl...so最终避免错误消息的唯一方法是创建一个新文件:

/usr/lib64 64

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74226880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档