锁定:使用 pacnew 覆盖 /etc/shadow 和 /etc/grub.d

锁定:使用 pacnew 覆盖 /etc/shadow 和 /etc/grub.d

使用 Linux 这么多年了,我从来没有犯过这么严重的错误。我应该更清楚,老实说,我不知道自己在想什么。

在尝试修复我收到的一条小错误消息时(这与我现在更大的问题无关),我发现一篇文章说“只需运行 pacdiff 并覆盖旧文件”,并且没有太多研究它,我开始覆盖..

我想我确实有勇气/etc/shadow在覆盖它之前进行备份,并且在几个条目后就停止了覆盖,但我现在被锁定在 root 和所有用户之外。我现在在计算机上,因为我害怕重新启动,因为我也覆盖了/etc/grub.d(我没有备份)!备份/etc/shadow在我的目录中/home,属于 root 用户,所以我现在无法读取它,但我确实拥有它。

到底是做什么pacdiff(O)verwrite with pacnew?我找到了说明恢复 /etc/shadow 文件,但是我现在可以grub-boot loader重新启动吗?

我的根分区和主分区未加密,但我有一个 LUKS 加密分区。如果情况变得更糟,我必须重新安装而不格式化我的/home加密分区,是否有任何实例cryptsetup能够使用密码打开 LUKS 加密分区?挂载和打开的信息存储在LUKS分区头中,所以我应该没问题吧?我无法找出我正在使用的密码,因为我没有 root 访问权限,但我几乎肯定它是默认值。

我该如何继续?在制定计划之前我不会关闭这台机器。我使用的是双启动 Manjaro/Windows。我确实制作了一个可启动的 Manjaro USB,如果需要的话还可以制作另一台机器。任何帮助将非常感激。这不是我最自豪的时刻,但却是一个很好的教训。我比以往任何时候都更需要你们。

答案1

我从未使用过 Manjaro,但适用于 Arch Linux 的流程也应该适合您的情况。

您应该能够启动 Manjaro live USB,挂载 Manjaro 安装的根文件系统,挂载现有/home目录并将备份副本shadow放回其位置。

然后您还应该能够启动已安装的 Manjaro,因为/etc/grub.d它仅用于(重新)创建 GRUB 配置,并且在启动过程中不需要。然而,恢复(如果没有备份,请再次编辑它们)它包含的文件非常重要,否则下次某些软件包更新触发重新启动时,您的系统将面临无法启动(或者更有可能的是不再可双启动)的风险。 -创建引导加载程序配置。

如果您有一个加密的根文件系统,这也可能有效。udev负责在任何块设备(例如 MD RAID 阵列或 LVM 卷)可用时立即激活它们,通常留给您唯一的事情是:

  • 打开加密设备;就您而言,您应该能够:

    cryptsetup open /dev/your_encrypted_device decrypted_device_name
    

    除非有什么东西擦除了您的 LUKS 标头,否则只需要密码。 (请注意,如果 LUKS 标头已被擦除或损坏并且您没有备份,则无法恢复您的数据)。

  • 挂载文件系统。例如mount /dev/sdaN /mount /dev/mapper/mapped_dev /

lsblk可以帮助您探索设备树并找到要打开/安装的正确设备(查看该TYPE列)。


当 pacman 安装文件的新版本时,其修改时间与软件包数据库中记录的时间不匹配,现有文件不会被覆盖,而是.pacnew会创建一个文件。

及时处理.pacnew文件非常重要,因为在滚动发布的发行版上,任何软件包更新都可能会带来重大更改。例如,现有的配置文件可能会提到在要安装的程序版本中已弃用的选项,而这些选项需要不同的选项。发行版维护人员无法处理所有可能的情况,检查配置文件的工作留给用户。

pacdiff旨在帮助完成此过程:它会遍历包管理器跟踪的pacnew(和.pacsave) 文件并让您查看它们。 “(O)verwrite with pacnew”的作用正是如此:现有文件将被版本替换,.pacnew并且您的自定义配置将丢失。

虽然最正确的操作通常是检查.pacnew文件的现有版本和版本并在需要时合并它们,但某些.pacnew文件并不意味着要执行操作。假设 Manjaro 在这方面与 Arch 保持一致,这对于用户数据库来说也是如此(包括/etc/passwd/etc/shadow“除非 Pacman 输出相关的操作消息”

相关内容