注意:
- 此教程在 Oracle 提供的免费实验室环境中提供。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成练习后,将这些值替换为特定于云环境的值。
在 Oracle Linux 上使用和启用 ACL
简介
访问控制列表 (ACL) 提供对目录和文件的访问控制。ACL 可以为所有者、组和所有其他系统用户设置读取、写入和执行权限。
ACL 由一组规则组成,这些规则指定特定用户或组如何访问启用 ACL 的文件和目录。常规 ACL 条目指定单个文件或目录的访问信息。缺省 ACL 条目仅针对目录设置,并指定目录中不具有访问 ACL 的任何文件的缺省访问信息。
在目录上设置默认 ACL 时,其子目录会自动继承相同的权限。ACL 可与 btrfs、ext3、ext4、OCFS2 和 XFS 文件系统以及已挂载的 NFS 文件系统一起使用。
目标
- 检查文件系统 ACL 支持
- 使用
setfacl和getfacl命令添加和显示 ACL 规则
要求
具有可用磁盘和完全修补的 Oracle Linux 安装的系统。
设置实验室环境
注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用说明。
-
如果尚未连接,请打开一个终端并通过 ssh 连接到 ol-node01 实例。
ssh oracle@<ip_address_of_instance> -
验证块存储卷是否存在。
sudo lsblk -f空闲实验环境的输出显示两个块设备:
sda(包含基本 OS)和sdb(此实验使用)。使用-f选项可显示文件系统类型 (FSTYPE) 和块普遍唯一标识符 (UUID)。
使用 ACL 支持挂载文件系统
-
创建挂载点目录。
sudo mkdir /test -
验证 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 -
使用 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 -
确保文件系统挂载存在。
df -T | grep sdb1输出显示挂载点
/test存在 ext4 文件系统/dev/sdb1。
使用 ACL 功能
-
尝试在新挂载点下创建文件。
touch /test/file1输出示例:
touch: cannot touch '/test/file1': Permission denied此命令失败,因为
oracle用户无权在/test目录中创建文件。 -
获取目录的 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 -
将 ACL 规则添加到目录。
sudo setfacl -m u:oracle:rwx /test该规则向
oracle用户授予 read、write 和 execute 权限。 -
检查目录的更新 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行。 -
仅显示目录的长列表格式。
ls -ld /test输出示例:
drwxrwxr-x+ 3 root root 4096 Jul 13 20:48 /test输出中显示的权限包括加号 (
+),指示包含 ACL。 -
尝试重新创建文件。
touch /test/file1此次命令应该成功。
-
确认创建文件。
ls -l /test
有关其他选项和示例,请查看 man getfacl 或 man setfacl 页面。
详细信息
请参阅其他相关资源:
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Use and Enable ACLs on Oracle Linux
F60353-01
July 2022
Copyright © 2022, Oracle and/or its affiliates.