[note] 解決 fstatat canonical snap 目錄:權限被拒
註記:此頁為由 AI(gpt-5-mini-2025-08-07)自動翻譯自英文原文,可能含有少量不準確之處。
📌 介紹
在 Ubuntu 上使用 Snap 應用程式時,您可能會遇到與 fstatat 有關的令人困惑的權限錯誤。這篇筆記記錄了一個真實的問題,探討可能的原因,並分享實際有效的簡單解法。
⭐ 注意
本文最初在遇到實際問題時,並在 ChatGPT 協助下草擬。我已驗證解決方案並修訂內容,以確保對遇到相似問題的人來說準確且清楚。
📚 前置條件
- AppArmor
- LDAP (Lightweight Directory Access Protocol)
- fstatat
- snap
以下是本文提及的一些關鍵概念:
術語 | 中文說明 | 英文說明 |
---|---|---|
AppArmor | Ubuntu 的一種安全模組,用來限制應用程式能存取的資源,例如檔案、網路。 | Ubuntu 的安全模組,用來限制應用程式可以存取的資源。 |
LDAP (Lightweight Directory Access Protocol) | 一種常見的用戶驗證協定,常用於企業環境集中管理帳號。 | 一種常見的用戶驗證協定,常用於企業環境中的集中式帳號管理。 |
fstatat | 一個 Linux 系統呼叫,用來查詢檔案資訊。這個錯誤就是因為它失敗了。 | 一個用於取得檔案資訊的 Linux 系統呼叫。當此呼叫失敗時會產生錯誤。 |
Snap | Ubuntu 推出的套件系統,讓應用程式更容易安裝、升級與隔離管理。 | Ubuntu 的套件系統,讓應用程式更容易安裝、更新,並在沙盒中執行。 |
- 非標準家目錄:使用者的家目錄位於預設
/home/username
路徑之外,通常位於不同的磁碟或掛載點上 - 家目錄為符號連結:家目錄看起來在
/home/username
,但實際上是指向其他位置的符號連結
🧭 問題解決框架
問題
1 | cannot fstatat canonical snap directory: Permission denied |
根本原因分析
一般而言,此問題常見有兩個原因:
- 系統安裝在 NTFS 分割區。
- 家目錄被符號連結到非標準位置。
檢查檔案系統類型
1 | df -T / |
系統安裝在 ext4 分割區
檢查是否有符號連結
1 | ls -l /home/hsiangjenli/Documents/github |
這些資料夾都不是符號連結
為什麼會發生
我也不知道 …
解決方案
令人驚訝的是,執行下列指令解決了問題:
1 | sudo dpkg-reconfigure apparmor |
輸入您想使用的目標目錄路徑
重新啟動電腦~~
🔁 重點回顧
- ✅ 錯誤
cannot fstatat canonical snap directory: Permission denied
通常與 AppArmor 的限制有關 - ✅ 常見原因包括:
- 系統或家目錄使用 NTFS 分割區
- 家目錄為符號連結或位於非標準位置
- 🔍 在本例中:
- 系統在 ext4 分割區 — ✅ 不是 NTFS。
- 家目錄不是符號連結 — ✅ 不是符號連結。
- ⚠️ 根本原因仍不明
- 🛠 問題透過下列方式解決:
- 執行
sudo dpkg-reconfigure apparmor
- 在設定過程中輸入家目錄的實際路徑
- 重新啟動系統
- 執行
🔗 參考資料
[note] 解決 fstatat canonical snap 目錄:權限被拒