如何在 Linux 上配置访问控制列表 (ACL)如何在 Linux 上配置访问控制列表 (ACL)如何在 Linux 上配置访问控制列表 (ACL)如何在 Linux 上配置访问控制列表 (ACL)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上配置访问控制列表 (ACL)

在 Linux 上使用权限是一项相当简单的任务。您可以定义用户、组或其他人的权限。当您在通常没有很多用户的桌面 PC 或虚拟 Linux 实例上工作,或者当用户之间不共享文件时,这种方法非常有效。但是,如果您是一个大型组织,为不同的用户运行 NFS 或 Samba 服务器,该怎么办?然后,您将需要挑剔并设置更复杂的配置和权限以满足您的组织的要求。

Linux(以及其他符合 POSIX 标准的 Unix)具有所谓的访问控制列表 (ACL),这是一种超出常见范例的分配权限的方法。例如,默认情况下您应用三个权限组:所有者、组和其他。使用 ACL,您可以为其他用户或组添加权限,这些用户或组不是简单的“其他”或所有者不属于其的任何其他组。您可以允许特定用户 A、B 和 C 具有写权限,而不让他们的整个组具有写权限。

ACL 可用于各种 Linux 文件系统,包括 EXT2、EXT3、EXT4、XFS、Btfrs 等。如果您不确定您使用的文件系统是否支持 ACL,只需阅读文档。

在 Linux 上安装 ACL 工具

首先,我们需要安装管理ACL的工具。

在 Ubuntu/Debian 上:


$ sudo apt-get install acl

在 CentOS/Fedora/RHEL 上:


# yum -y install acl

在 Arch Linux 上:


# pacman -S acl

在文件系统上启用 ACL

出于演示目的,我将使用 Ubuntu 服务器,但其他发行版应该以相同的方式工作。

安装ACL工具后,需要在我们的磁盘分区上启用ACL功能,以便我们可以开始使用它。

首先,我们可以检查 ACL 功能是否已启用:


$ mount

正如您所注意到的,我的根分区启用了 ACL 属性。如果您的没有,您需要编辑 /etc/fstab 文件。在要启用 ACL 的分区的选项前面添加 acl 标志。

现在我们需要重新挂载分区(我更喜欢完全重新启动,因为我不喜欢丢失数据)。如果您为任何其他分区启用了 ACL,则还必须重新挂载它们。


$ sudo mount / -o remount

惊人的!现在我们已经在系统中启用了 ACL,让我们开始使用它。

ACL 示例

基本上,ACL 由两个命令管理:setfacl 用于添加或修改 ACL,getfacl 用于显示分配的 ACL。让我们做一些测试。

我创建了一个名为 freeuser 的假设用户拥有的目录 /shared。


$ ls -lh /

我想与另外两个用户 test 和 test2 共享此目录,其中一个具有完全权限,另一个仅具有读取权限。

首先,为用户 test 设置 ACL:


$ sudo setfacl -m u:test:rwx /shared

现在用户 test 可以创建目录、文件并访问 /shared 目录下的任何内容。

现在我们将为用户test2添加只读权限:


$ sudo setfacl -m u:test2:rx /shared

请注意,执行权限是必需的,以便 test2 可以读取目录。

让我解释一下 setfacl 命令的语法:

  • -m 表示修改ACL。您可以添加新的 ACL,或修改现有的 ACL。

  • u: 表示用户。您可以使用g来设置组权限。

  • test 是用户的名称。

  • :rwx 代表你要设置的权限。

现在让我向您展示如何读取 ACL。


$ ls -lh /shared

正如您所注意到的,正常权限后面有一个 +(加号)符号。这意味着已经设置了ACL。要实际读取 ACL,我们需要运行:


$ sudo getfacl /shared

最后,如果您想删除 ACL:


$ sudo setfacl -x u:test /shared

如果您想一次性清除所有 ACL 条目:


$ sudo setfacl -b /shared

最后一件事。命令 cp 和 mv 在使用 ACL 处理文件或目录时可以更改其行为。对于cp,需要添加-p参数来复制ACL。如果这是不可能的,它会向您显示警告。 mv 将始终移动 ACL,而且如果不可能,它会向您显示警告。

结论

使用 ACL 可以让您对要共享的文件拥有强大的能力和控制力,尤其是在 NFS/Samba 服务器上。此外,如果您管理共享主机,则此工具是必备的。

©2015-2025 艾丽卡 support@alaica.com