科技 · 實用指南
Linux 顯示「符號連結層級過多」?刪除前先追蹤完整路徑
固定原呼叫者與精確路徑,逐元件檢查並保存連結證據,只修復第一個已證明的循環或過深轉換。

「符號連結層級過多」是路徑解析結論,不是刪除所示路徑的許可。核心可能遇到直接自環、較長循環,或超過跟隨上限但並未循環的有效鏈。
安全做法是由原失敗呼叫者開始稽核完整路徑:保存連結目標,找出第一個重複轉換,只做一處精確修復,並讓原操作重新通過。
固定原呼叫者與完整路徑
保存完整錯誤、命令、使用者、工作目錄、PATH 與精確路徑,並記錄呼叫者位於宿主 shell、服務、chroot、容器或其他掛載命名空間;別處成功不是等價證據。
不要先執行 rm、rm -r 或 ln -sf。先保存目錄項及每個符號連結的原始目標位元;尾端斜線或 PATH 查找會改變核心解析的元件。
逐元件檢查,不要把連結解參照掉
對精確路徑執行 namei -l,記錄每個元件的類型、擁有者與目標。可疑元件用不跟隨連結的 lstat 或 stat,並用 readlink 保存目標;相對目標要由連結所在目錄解釋。
標示第一個回到既有元件或 inode 的轉換,以區分 A→A 的直接自環與 A→B→C→A 的多連結循環,並保存父目錄與命名空間。
分類 ELOOP 分支
Linux 對單一路徑跟隨超過 40 個符號連結也會回傳 ELOOP,因此無環但過深的鏈也可能失敗。先證明是重複還是僅超限;縮短深鏈與打斷循環是不同修復。
若許多命令失敗,應把每個 PATH 目錄當成獨立路徑檢查。一個自我參照 PATH 元件可讓無關程式一起失效;只有服務或容器失敗時,要比較其 root、mount 與工作目錄。
只修復已證明的轉換
確認壞連結後,先記錄舊目標,只替換該目錄項,並用正確的相對或絕對形式指向存在的物件。絕不要遞迴刪除含義不明的連結路徑;先證明它是連結、目錄或掛載邊界。
有效但過深的鏈只需縮短並保持最終物件;PATH 缺陷只改循環元件;命名空間不一致應修復掛載或部署視圖,不要改寫正確的宿主連結。
用原呼叫者完成驗收
再次執行 namei -l,確認路徑到達預期物件、沒有重複轉換且鏈未超限,再以相同使用者、工作目錄與命名空間重放原命令。
驗收要同時滿足結構與呼叫者證據:鏈正確、原操作成功、沒有暫時繞過、遞迴刪除或錯誤目標;保存修復前後紀錄以便回復。
