“sudo”命令损坏 [3 次不正确的尝试,没有提示通过] Debian 10

“sudo”命令损坏 [3 次不正确的尝试,没有提示通过] Debian 10

我非常需要你的帮助。我有 debian 10 服务器,有 2 个用户:root 和 user(添加到 sudo 组)。我使用 RDP 的用户帐户,并且“sudo”命令始终运行良好。

当我尝试执行以下操作(从用户帐户)时,问题就开始了:

$ echo 'deb http://ftp.de.debian.org/debian bookworm main' >> /etc/apt/sources.list

关于 libcrypt 有一些错误,我尝试了类似的方法(不太记得了):

$ sudo echo 'deb http://ftp.de.debian.org/debian bookworm main' >> sudo /etc/apt/sources.list

我认为问题在于我对“sudo”进行了回应?我对linux不太熟悉,我用google搜索了几天,但无法解决问题。大多数使用 sudo 的命令都会立即收到此输出,而不会提示我输入密码:

$ sudo whoami
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts

如果我尝试:

$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied

每个带有 sudo 访问的命令都被拒绝。我无法更改我在谷歌上搜索的配置文件。所以我只能通过 RDP 访问用户帐户,如果我尝试不使用 sudo,我会收到:

$ apt update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)

请帮助我理解问题并解决它。

答案1

将(= 一旦发布后将是 Debian 12)存储库添加bookworm到 Debian 10 是一个坏主意,因为升级时您无法跳过版本:您必须先升级到 Debian 11“bullseye”,然后再升级到“bookworm” 。

幸运的是,您的第一次尝试(没有sudo)将会失败,因为/etc/apt/sources.list需要 root 访问权限才能写入。

/usr/bin你记住的第二个命令的版本也不应该引起任何重大问题,假设你在执行它时还不是root用户。

sudo echo 'deb http://ftp.de.debian.org/debian bookworm main' >> sudo /etc/apt/sources.list

该命令实际上意味着“使用root权限将单引号中的文本写入标准输出,然后(作为普通用户)将其附加到当前目录中名为“sudo”的文件中(如果该文件不存在则创建该文件)所以这也不应该造成什么大的伤害,除非你的记忆有误。

如果没有(成功)使用sudo或以其他方式拥有根访问权限,您将无法使用apt或其他包管理命令,因为这些命令需要根权限才能工作。

我建议检查几件事:

实际状况如何/etc/apt/sources.list

less /etc/apt/sources.list过去查看。您应该能够以普通用户身份执行此操作,无需任何特殊权限。

你做了什么实际上做?

使用history命令查看命令历史记录,而不是依赖你的记忆。

现在发生了什么?

当您使用该命令时,您可以运行type sudo以查看实际正在运行的内容sudo。通常它应该响应:

sudo is /usr/bin/sudo

也许

sudo is hashed (/usr/bin/sudo)

sudo如果它告诉您不同的信息,则说明您的 $PATH 目录之前有一些非标准命名的内容/usr/bin,或者您​​已设法使用该名称定义 shell 别名或函数,sudo并且它正在执行而不是真正的sudo command.

如果这是问题所在,您应该能够sudo通过完整路径指定来使用真正的命令,即/usr/bin/sudo而不只是sudo.


看来您已成功将bookworm存储库添加到/etc/apt/sources.list.如果您还安装了unattended-upgrades软件包,系统可能已开始尝试从 Debian 10“buster”直接升级到“bookworm”(未来的 Debian 12,仍处于测试阶段),跳过 Debian 11...这不会工作。

通过尝试安装python3-dev、添加存储库后,您还可能导致依赖级联python3.10-dev,从而触发许多(但不是全部)系统库的升级。libpython3.10libpython3.10-devpython3.10bookworm

实际上,您可能已经做了一个 FrankenDebian:来自不同版本的软件包的奇怪组合,但从未承诺可以一起工作。

/var/log/dpkg.log是一个低级包管理日志,应记录所有最近的包管理操作,无论是手动还是自动。普通用户应该可以阅读它。您是否看到问题开始时记录的任何内容?

每行应以时间戳开头,后跟描述特定操作的单词。有趣的行应该有动作词,如、install和/或。upgraderemovepurge

在操作词之后,应该有包名称,然后是旧版本(或<none>如果不适用)和新版本(或<none>)。

如果您采用带有时间戳的行添加 bookworm 存储库(检查 的修改时间/etc/apt/sources.list),这些行应该准确地告诉您哪些包已被替换,最有可能是来自 的相应包bookworm

不幸的是,由于您显然只有 RDP 访问系统,因此如果buster没有可以访问系统引导加载程序的人的帮助,您可能无法获得 root 访问权限并将软件包降级回适当的版本。

要恢复,可能需要从外部介质将系统引导至救援模式,然后激活网络接口并chroot以 root 身份进入损坏的系统。然后,应该可以通过/var/log/dpkg.log在添加存储库时或之后反转文件中列出的安装/更新/删除操作来降级错误升级的软件包bookworm

相关内容