注意:

在 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(包含基本 OS)和 sdb(此实验使用)。使用 -f 选项可显示文件系统类型 (FSTYPE) 和块普遍唯一标识符 (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
    

    输出显示挂载点 /test 存在 ext4 文件系统 /dev/sdb1

使用 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
    

    该规则向 oracle 用户授予 readwriteexecute 权限。

  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 帮助中心