📜  Hadoop – 文件权限和 ACL(访问控制列表)

📅  最后修改于: 2021-10-27 06:50:43             🧑  作者: Mango

通常,Hadoop 集群在许多层上执行安全性。保护级别取决于组织的要求。在本文中,我们将了解 Hadoop 的第一级安全性。它主要包含两个组件。这两个功能都是默认安装的一部分。

1.文件权限
2. ACL(访问控制列表)

1.文件权限

HDFS(Hadoop 分布式文件系统)像文件权限模型一样实现 POSIX(便携式操作系统接口)。它类似于Linux 中的文件权限模型。在 Linux 中,我们使用Owner、Group 和 Others ,它们对 Linux 环境中可用的每个文件和目录都有权限。

Owner/user                           Group                              Others
         rwx                              rwx                                rwx   

同样,HDFS 文件系统也为这个Owner、Group 和 Others实现了一组权限。在 Linux 中,我们使用-rwx来授予特定用户的权限,其中r用于读取, w用于写入或追加, x用于可执行文件。但是在 HDFS 中,对于文件,我们有r用于读取, w用于写入和附加,而x IE 没有意义,即执行权限,因为在 HDFS 中,所有文件都应该是数据文件,我们没有任何概念在 HDFS 中执行文件。由于我们在 HDFS 中没有可执行的概念,所以我们没有用于 HDFS的 setUIDsetGID。

Hadoop中的文件权限

同样,我们可以对 HDFS 中的目录拥有权限。其中r用于列出目录的内容, w用于创建或删除目录, x权限用于访问目录的子目录。这里我们也没有用于 HDFS的 setUIDsetGID。

HDFS 目录权限

如何更改此 HDFS 文件的权限?

-chmod代表更改模式命令,用于更改我们 HDFS 中文件的权限。第一个列出我们 HDFS 中可用的目录,并查看分配给每个目录的权限。您可以使用以下命令列出 HDFS 根目录中的目录。

hdfs dfs -ls /

这里, /代表你的 HDFS 的根目录。

HDFS 权限文件

让我首先列出 Hadoop_File 目录中存在的文件。

hdfs dfs -ls /Hadoop_File

列出我的 Hadoop_File 目录中存在的文件

在上图中,您可以看到对于file1.txt ,我只有所有者用户的读写权限。所以我也在向组和其他人添加写权限。

先决条件:

你必须熟悉Linux 中 -chmod命令的使用意味着如何使用 switch 为用户设置权限。要向组和其他人添加写入权限,请使用以下命令。

hdfs dfs -chmod  go+w /Hadoop_File/file1.txt

这里, go代表组和其他, w表示写入, +号表示我正在为组和其他添加写入权限。然后再次列出文件以检查它是否有效。

hdfs dfs -ls /Hadoop_File

我们已经完成了,类似地,您可以更改我们 HDFS(Hadoop 分布式文件系统)中可用的任何文件或目录的权限。

同样,您可以根据您对任何用户的要求更改权限。您还可以分别使用 -chgrp-chown更改目录的组或所有者。

2. ACL(访问控制列表)

ACL 提供了一种更灵活的方式来为文件系统分配权限。它是一个文件或目录的访问权限列表。如果您为 Hadoop 单节点集群设置创建了一个单独的用户,或者您有一个存在多个节点的多节点集群设置,并且您想更改其他用户的权限,我们需要使用 ACL。

因为如果你想改变不同用户的权限,你不能用-chmod命令来做。例如,对于 Hadoop 的单节点集群,您的主要用户是root并且您已经为 Hadoop 设置创建了一个单独的用户,名称为Hadoop 。现在,如果您想更改 HDFS 中存在的文件的 root用户权限,则无法使用 -chmod命令来执行此操作。图中就是ACL(Access Control List)。使用 ACL,您可以为特定的命名用户或命名组设置权限

为了在 HDFS 中启用 ACL,您需要在hdfs-site.xml文件中添加以下属性。


dfs.namenode.acls.enabled
true

注意:不要忘记重新启动所有守护进程,否则对hdfs-site.xml所做的更改不会反映。

您可以使用 -getfacl命令为目录检查访问控制列表 (ACL) 中的条目,如下所示。

hdfs dfs -getfacl /Hadoop_File

您可以看到我们的 ACL 中有 3 个不同的条目。假设您想更改任何 HDFS 目录的 root用户权限,您可以使用以下命令进行操作。

句法:

hdfs dfs -setfacl -m user:user_name:r-x /Hadoop_File

您可以通过将任何用户添加到该目录的 ACL 来更改其权限。下面是一些更改不同命名用户对任何 HDFS 文件或目录的权限的示例。

hdfs dfs -setfacl -m user:root:r-x /Hadoop_File

另一个例子,对于 raj 用户:

hdfs dfs -setfacl -m user:raj:r-x /Hadoop_File

这里 rx 表示该 root 和 raj用户对 HDFS 目录的只读和执行权限。

就我而言,我没有任何其他用户,所以我正在更改我唯一用户的权限,即diksant

hdfs dfs -setfacl -m user:dikshant:rwx /Hadoop_File

然后使用-getfacl命令列出 ACL 以查看更改。

hdfs dfs -getfacl /Hadoop_File

在这里,您可以在该目录的 ACL 中看到另一个条目user:dikshant:rwx,用于获得diksant用户的新权限。同样,如果您有多个用户,那么您可以更改他们对任何 HDFS 目录的权限。这是从rx模式更改用户 dikshant权限的另一个示例。

在这里,您可以看到我已将diksant用户权限从rwx更改为rx