Grub

鎖定:用 pacnew 覆蓋 /etc/shadow 和 /etc/grub.d

  • October 23, 2020

在使用 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 和另一台機器。任何幫助將非常感激。這不是我最自豪的時刻,而是我學到的重要一課。我比以往任何時候都更需要你們。

我從未使用過 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 輸出相關消息以供操作”

引用自:https://unix.stackexchange.com/questions/615918