全部產品
Search
文件中心

Alibaba Cloud Linux:Alibaba Cloud Linux系統的Overlayfs檔案系統缺乏讀許可權導致操作失敗,如何處理?

更新時間:Jul 17, 2024

本文為您介紹Alibaba Cloud Linux 2和Alibaba Cloud Linux 3系統的Overlayfs檔案系統在某些情境下因檔案/目錄缺乏讀許可權導致操作失敗的問題原因及解決方案。

問題描述

在Alibaba Cloud Linux系統的Overlayfs檔案系統中使用唯寫方式開啟或者在對應目錄下touch檔案觸發copy up時報錯。此時建議您繼續運行以下命令判斷系統存在的問題:

mkdir -p /root/test/lower/dir /root/test/upper /root/test/work /root/test/mount
chmod 0737 /root/test/lower/dir
chown root:bin /root/test/lower/dir
mount -t overlay -o lowerdir=/root/test/lower,upperdir=/root/test/upper,workdir=/root/test/work overlay /root/test/mount
cd /root/test && sudo -u bin -g bin touch mount/dir/RANDOM

如果上述命令報如下錯誤,則說明Overlayfs檔案系統的檔案/目錄缺乏讀許可權(-wx)。

touch: 無法建立 'mount/dir/RANDOM': 許可權不夠

觸發以上問題的系統滿足以下條件:

  • 核心版本

    作業系統

    鏡像

    核心

    Alibaba Cloud Linux 2

    Alibaba Cloud Linux 2.1903 LTS 64位

    4.19.91-27到4.19.91-27.4之間

    包括4.19.91-27.al7、4.19.91-27.1.al7、4.19.91-27.2.al7、4.19.91-27.3.al7、4.19.91-27.4.al7。

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3.2104 LTS 64位

    5.10.134-13到5.10.134-14.1之間

    包括5.10.134-13.al8、5.10.134-13.1.al8、5.10.134-14.al8、5.10.134-14.1.al8。

  • Overlayfs的所有upperdir與lowerdir處於同一檔案系統。

  • 進程請求寫檔案的操作觸發copy up,且進程沒有lowerdir下對應檔案或目錄的讀許可權。

問題原因

當所有upperdir與lowerdir處於同一檔案系統且訪問的檔案/目錄沒有讀許可權,因此沒有正確執行ovl_override_creds(),使得執行copy up操作進程的許可權沒有提升到Overlayfs檔案系統掛載者的許可權,最終導致copy up需要讀許可權時報許可權不足。

解決方案

  1. 遠端連線ECS執行個體。

    更多資訊,請參見通過密碼或密鑰認證登入Linux執行個體

  2. 運行以下命令,確認系統核心版本。

    uname -r

    系統顯示類似如下:

    • Alibaba Cloud Linux 2系統

      4.19.91-27.al7.x86_64
    • Alibaba Cloud Linux 3系統

      5.10.134-13.1.al8.x86_64
  3. 運行以下命令,修複問題。

    • 通過安裝核心熱補丁的方式進行修複。

      • 對於Alibaba Cloud Linux 3系統的5.10.134-13.al8、5.10.134-13.1.al8、5.10.134-14.al8、5.10.134-14.1.al8版本,安裝相應核心版本的核心熱補丁,例如:

        yum install -y kernel-hotfix-13108708-5.10.134-13.1
      • 對於Alibaba Cloud Linux 2系統的4.19.91-27.al7、4.19.91-27.1.al7、4.19.91-27.2.al7、4.19.91-27.3.al7、4.19.91-27.4.al7版本,安裝相應核心版本的核心熱補丁,例如:

        yum install -y kernel-hotfix-13110805-4.19.91-27
    • 通過更新核心版本的方式進行修複。

      yum upgrade kernel
      • Alibaba Cloud Linux 3系統:更新到5.10.134-15.al8及以後的版本

      • Alibaba Cloud Linux 2系統:更新到4.19.91-28.al7及以後的版本

  4. 運行以下命令,驗證問題是否修複。

    mkdir -p /root/test/lower/dir /root/test/upper /root/test/work /root/test/mount
    chmod 0737 /root/test/lower/dir
    chown root:bin /root/test/lower/dir
    mount -t overlay -o lowerdir=/root/test/lower,upperdir=/root/test/upper,workdir=/root/test/work overlay /root/test/mount
    cd /root/test && sudo -u bin -g bin touch mount/dir/RANDOM

    如果上述命令沒有報錯,則說明問題修複完成。