Ubuntu 中的访问控制列表

您所在的位置:网站首页 文件访问控制列表 Ubuntu 中的访问控制列表

Ubuntu 中的访问控制列表

2024-06-03 03:54| 来源: 网络整理| 查看: 265

Ubuntu 中的访问控制列表

用户帐户是使用一组预定义的系统文件和服务权限来创建的。另一方面,组的存在是为了在用户之间共享文件和文件夹。通常,创建用户帐户后,可以将它们分配给备用组。但是,有时您可能不想将特定用户分配给特定组,但同时您可能需要与该特定用户共享文件/文件夹。这就是访问控制列表 (ACL) 发挥作用的地方。在本教程中,我们将了解 Ubuntu 中的访问控制列表。

访问控制列表 (ACL)

访问控制列表 (ACL) 允许我们微调访问控制。换句话说,假设用户 SARA 需要访问 KALYANI 拥有的单个文件夹。从技术上讲,我们可以将 SARA 分配给 KALYANI 的组,但这意味着 SARA 可以访问超出她需要的内容,并进一步假设 KALYANI 拥有她不希望 SARA 读取、写入或执行的敏感文件。这就是访问控制列表或 ACL 发挥作用的地方。理论上,我们可以扰乱权限,但 ACL 允许我们向不同的用户提供不同的访问权限,并且无需扰乱文件或文件夹的实际基本权限即可授予访问权限。

查看当前权限

我们使用getfacl(获取文件访问控制列表)命令来查看当前的ACL权限。

getfacl file/folder

假设我创建了一个名为 Secret 的文件夹,其中包含两个子目录和 5 个文件。进一步假设我想查看秘密文件夹的ACL权限。

getfacl secret

这意味着文件和文件夹的所有者 kalyani(属于 kalyani 组)具有读取、写入和执行权限。然而,其他人却没有任何许可。

分配用户微调权限

使用 ACL 微调权限是使用 setfacl 命令进行的。 -m 开关尤其用于修改权限。

setfacl -m u:username:permissions filename

u 表示更改是针对用户而不是组。在冒号后面,写下被授予权限的用户名以及授予的权限。这些权限与 chmod 可用的权限相同:读、写和执行。最后,我们写入应用权限的文件名。

例如,假设我希望向用户 SARA 授予她对此秘密文件夹的完全访问权限,那么我会写:

setfacl -m u:sara:rwx secret

现在,如果我们以 SARA 身份登录,我们将对文件夹“secret”进行读、写和执行访问。现在,请注意,我为初始目录设置了 770 权限。保留了此权限,但使用访问控制列表添加了规则的例外。如果我有另一个名为“kali”的文件夹,其权限为 kalyani 所拥有的 770,那么用户 SARA 将无法触及它。事实上,它会说“权限被拒绝”。

此外,需要注意的一点是,一旦文件被修改为 ACL,列出它时旁边会有一个加号。在这种情况下,正如您所看到的,它显示 drwxrwx-+ 表示名为“secret”的文件夹。加号表示它已使用 ACL 进行了修改。

设置 ACL 后,还会创建一个掩码。掩码是 ACL 用户或组对目录或文件可能拥有的最大权限。

分配组微调权限

就像分配用户特殊权限一样,我们也可以分配组特殊权限。这意味着我们可以保持基本权限不变,并使用 ACL 为特定组分配附加权限。

setfacl -m g:group_name:permissions filename

例如:

setfacl -m g:john:r secret

在本例中,我们授予组 JOHN 对秘密文件夹的读取权限。这意味着 JOHN 组的所有成员都将具有秘密文件夹的读取权限,并且仅具有秘密文件夹的读取权限。其他一切都将处于锁定状态。

递归赋值

秘密文件夹设计为直接包含 3 个文件和 2 个子目录,每个子目录包含一个文件。

当我们为用户SARA和组JOHN分配权限时,我们并没有递归地进行操作,因此我们检查当前子目录的ACL权限(在为秘密目录分配权限之后)。

如您所见,ACL 权限仅应用于秘密目录,而不应用于子目录。这意味着用户 SARA 和组 JOHN 对子目录没有给定的权限!这种情况下,如果我们想给整个目录(包括子目录)赋予权限,就必须进行递归赋值。我们使用 -R 开关来执行此操作。

setfacl -R -m u:username:permissions filename

例如:

setfacl -R -m u:sara:rwX secret删除微调权限

您可能还希望撤销授予的权限,这与授予权限一样容易。您可以使用 -x 开关而不是 -m 开关来撤销权限。

要删除特定条目:

setfacl -x u:username filename setfacl -x g:group_name filename

在这种情况下,我会写:

setfacl -x u:sara secretsetfacl -x g:john secret

要一次性删除所有条目:

setfacl -b filename

例如:

setfacl -b secret

但是,这并不会删除子目录的权限。为了删除子目录的权限,必须使用递归。

setfacl -R -b secret概括

我们学到的一切都可以归结为:

查看ACL权限:

getfacl filename

设置ACL权限:

setfacl filename

选项:-m、--modify 修改 ACL-x、--remove 删除 ACL 条目-b、--remove-all 删除所有 ACL 条目-R 递归赋值

Entry:u:用户名:用户的权限g:group_name:组的权限

尽管 chmod 的存在是为了授予文件和文件夹权限,但它不是选择性的。它不能向不同的用户授予不同的权限。此外,有时人们也不想将随机的人添加到组中。 ACL 或访问控制列表就是为了这种场合而发明的。它可以授予特定用户或组对特定文件和/或文件夹的访问权限。在本教程中,我们学习了如何授予用户和组特殊权限、递归分配权限以及撤销所述权限。因此,从现在开始,微调文件和文件夹的权限!

快乐编码!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3