鎖定:用 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 和另一台機器。任何幫助將非常感激。這不是我最自豪的時刻,而是我學到的重要一課。我比以往任何時候都更需要你們。
我從未使用過 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 輸出相關消息以供操作”。