開啟權限認證
HDFS開啟了權限控制后,當您訪問HDFS時需要有合法的權限才能正常操作HDFS,例如讀取數(shù)據(jù)和創(chuàng)建文件夾等。本文為您介紹如何開啟HDFS的權限控制。
背景信息
Hadoop提供了以下兩種用于決定用戶身份的操作模式:
簡單模式(Simple):用戶的身份由與HDFS建立鏈接的客戶端操作系統(tǒng)決定。在類Unix系統(tǒng)中,等同于
whoami
命令。Kerberos集群模式:客戶端的身份由用戶自己的Kerberos證書決定。
您可以在創(chuàng)建EMR集群時,開啟Kerberos集群模式。Kerberos詳情信息,請參見Kerberos概述。
前提條件
已創(chuàng)建集群,詳情請參見創(chuàng)建集群。
操作步驟
對于開啟Kerberos模式的集群,已經(jīng)默認設置了HDFS的權限(umask為027),無需配置和重啟服務。
未開啟Kerberos模式的集群需要按照以下方式添加配置并重啟服務。
進入集群服務頁面。
在頂部菜單欄處,根據(jù)實際情況選擇地域和資源組。
單擊目標集群操作列的集群服務。
在集群服務頁面,單擊HDFS服務區(qū)域的配置。
在服務配置區(qū)域,根據(jù)實際需求修改配置項。
參數(shù)
描述
dfs.permissions.enabled
開啟權限檢查,修改參數(shù)值為true。
默認值為false。
dfs.datanode.data.dir.perm
DataNode使用的本地文件夾路徑的權限。
fs.permissions.umask-mode
權限掩碼,在新建文件或文件夾的時候的默認權限值。
dfs.namenode.acls.enabled
默認值為false。ACL控制,修改參數(shù)值為true,不僅可以對用戶或用戶組進行權限控制,還可以對其他用戶進行設置。
設置ACL相關命令有
hadoop fs -getfacl [-R] <path>
和hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]
。dfs.permissions.superusergroup
默認值為hadoop。超級用戶組的名稱。屬于該組的用戶都具有超級用戶的權限。
保存信息。
單擊下方的保存。
在彈出的對話框中,輸入執(zhí)行原因,單擊保存。
重啟服務。
在HDFS服務頁面的右上角,選擇 。
在彈出的對話框中,輸入執(zhí)行原因,單擊確定。
在確認對話中,單擊確定。
您可以單擊上方的操作歷史查看任務進度,等待任務完成。
使用示例
使用SSH方式登錄集群,詳情請參見登錄集群。
執(zhí)行以下命令,切換為已創(chuàng)建的emrtest用戶。
執(zhí)行以下命令,使用emrtest用戶創(chuàng)建目錄。
執(zhí)行以下命令,查看創(chuàng)建的目錄的權限。
hadoop fs -ls /tmp
返回如下類似信息。
drwxr-x--x - emrtest hadoop 0 2022-10-21 14:08 /tmp/emrtest drwxr-x--x - hadoop hadoop 0 2022-10-21 10:06 /tmp/hadoop-yarn drwx-wx-wx - hive hadoop 0 2022-10-21 10:13 /tmp/hive drwxr-x--x - hadoop hadoop 0 2022-10-21 10:23 /tmp/kyuubi-staging drwxrwxrwt - hadoop hadoop 0 2022-10-21 10:23 /tmp/logs
執(zhí)行以下命令,給目錄設置ACL權限并授權給foo用戶rwx權限。
執(zhí)行以下命令,查看目錄權限。
hadoop fs -ls /tmp/
返回如下類似信息。
drwxrwx--x+ - emrtest hadoop 0 2022-10-21 14:08 /tmp/emrtest drwxr-x--x - hadoop hadoop 0 2022-10-21 10:06 /tmp/hadoop-yarn drwx-wx-wx - hive hadoop 0 2022-10-21 10:13 /tmp/hive drwxr-x--x - hadoop hadoop 0 2022-10-21 10:23 /tmp/kyuubi-staging drwxrwxrwt - hadoop hadoop 0 2022-10-21 10:23 /tmp/logs
說明權限后面帶了+號的表示設置了ACL權限,例如drwxrwx--x+。
執(zhí)行以下命令,查看ACL權限。
hadoop fs -getfacl /tmp/emrtest
返回如下類似信息。
# file: /tmp/emrtest # owner: emrtest # group: hadoop user::rwx user:foo:rwx group::r-x mask::rwx other::--x
su emrtest
hadoop fs -mkdir /tmp/emrtest
hadoop fs -setfacl -m user:foo:rwx /tmp/emrtest