注意:

在 Oracle Linux 上使用並啟用 ACL

簡介

存取控制清單 (ACL) 提供對目錄和檔案的存取控制。ACL 可以設定擁有者、群組以及所有其他系統使用者的讀取、寫入以及執行權限。

ACL 包括一組規則,指定特定使用者或群組如何存取 ACL 啟用的檔案和目錄。一般 ACL 項目會指定單一檔案或目錄的存取資訊。預設的 ACL 項目只會在目錄上設定,並指定目錄內具有存取 ACL 之任何檔案的預設存取資訊。

在目錄上設定預設 ACL 時,其子目錄會自動繼承相同的權限。ACL 可與 btrfsext3ext4OCFS2XFS 檔案系統搭配使用,以及掛載的 NFS 檔案系統。

目標

需求

具有可用磁碟的系統,以及完整修補的 Oracle Linux 安裝。

設定實驗室環境

注意:使用免費實驗室環境時,請參閱 Oracle Linux Lab Basics,瞭解連線和其他使用指示。

  1. 如果尚未連接,請開啟終端機並透過 ssh 連線至 ol-node01 執行處理。

    ssh oracle@<ip_address_of_instance>
    
  2. 確認區塊磁碟區存在。

    sudo lsblk -f
    

    免費實驗室環境的輸出顯示兩個區塊裝置:sda,其中包含此實驗室所使用的基本作業系統和 sdb。使用 -f 選項,會顯示檔案系統類型 (FSTYPE) 和區塊通用唯一 ID (UUID)。

以 ACL 支援掛載檔案系統

  1. 建立掛載點目錄。

    sudo mkdir /test
    
  2. 檢查 ACL 支援是否存在。

    Oracle Linux 檔案系統 (例如 ext4btrfsxfs) 預設會啟用 acl 掛載選項。在 ext4 檔案系統上 (例如 /dev/sdb1),使用 tune2fs 進行驗證。

    sudo tune2fs -l /dev/sdb1 | grep -i acl
    

    範例輸出:

    [oracle@ol-node01 ~]$ sudo tune2fs -l /dev/sdb1 | grep -i acl
    Default mount options:    user_xattr acl
    
  3. 以 ACL 支援掛載磁碟。

    如果檔案系統預設未啟用 acl 掛載選項,請在使用 mount 指令時傳送 -o acl。由於 /dev/sdb1 使用 ext4,因此預設已經開啟此選項。

    sudo mount -t ext4 /dev/sdb1 /test
    

    若要讓此掛載點在重新啟動後持續有效,請將它增加到 fstab 檔案。

    MYUUID=$(sudo blkid | grep UUID= | grep sdb1 | awk '{ print $2 }')
    echo "$MYUUID /test ext4 defaults 0 0" | sudo tee -a /etc/fstab > /dev/null
    
  4. 確認檔案系統掛載存在。

    df -T | grep sdb1
    

    輸出顯示 ext4 檔案系統 /dev/sdb1 存在於掛載點 /test

使用 ACL 功能

  1. 嘗試在新的掛載點下建立檔案。

    touch /test/file1
    

    範例輸出:

    touch: cannot touch '/test/file1': Permission denied
    

    此指令失敗,因為 oracle 使用者沒有在 /test 目錄中建立檔案的權限。

  2. 取得目錄的 ACL 資訊。

    sudo getfacl /test
    

    範例輸出:

    [oracle@ol-node01 ~]$ sudo getfacl /test
    getfacl: Removing leading '/' from absolute path names
    # file: test
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    
  3. 新增 ACL 規則至目錄。

    sudo setfacl -m u:oracle:rwx /test
    

    規則會將 readwrite 以及 execute 權限授予 oracle 使用者。

  4. 檢查目錄的更新 ACL 資訊。

    sudo getfacl /test
    

    範例輸出:

    getfacl: Removing leading '/' from absolute path names
    # file: test
    # owner: root
    # group: root
    user::rwx
    user:oracle:rwx
    group::r-x
    mask::rwx
    other::r-x
    

    輸出顯示新增的 user:oracle:rwx 行。

  5. 只顯示目錄的長列表格式 。

    ls -ld /test
    

    範例輸出:

    drwxrwxr-x+ 3 root root 4096 Jul 13 20:48 /test
    

    輸出中顯示的權限包括指示包含 ACL 的加號 (+)。

  6. 嘗試再建立檔案。

    touch /test/file1
    

    命令應該在此時間之後執行。

  7. 確認建立檔案。

    ls -l /test
    

請參閱 man getfaclman setfacl 頁面以瞭解其他選項與範例。

其他相關資訊

請參閱其他相關資源:

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或前往 Oracle Learning YouTube 通道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請瀏覽 Oracle Help Center