注意:

在 Oracle Linux 上使用和启用 ACL

简介

访问控制列表 (ACL) 提供对目录和文件的访问控制。ACL 可以为所有者、组和所有其他系统用户设置读取、写入和执行权限。

ACL 由一组规则组成,这些规则指定特定用户或组如何访问启用 ACL 的文件和目录。常规 ACL 条目指定单个文件或目录的访问信息。缺省 ACL 条目仅针对目录设置,并指定目录中不具有访问 ACL 的任何文件的缺省访问信息。

在目录上设置默认 ACL 时,其子目录会自动继承相同的权限。ACL 可与 btrfs、ext3、ext4、OCFS2 和 XFS 文件系统以及已挂载的 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 文件系统(例如 ext4、btrfs 和 xfs)默认启用 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 用户授予 read、write 和 execute 权限。

  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 getfacl 或 man setfacl 页面。

详细信息

请参阅其他相关资源:

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心。