天天看點

怎麼設定某個使用者生成hdfs檔案的權限_HDFS ACL權限設定特别說明:該專欄文章均來源自微信公衆号《大資料實戰演練》,歡迎關注!一、背景二、前提條件三、文法四、為hue使用者賦予權限五、總結關于HDFS shell指令,可以檢視官網連結:

特别說明:該專欄文章均來源自微信公衆号《大資料實戰演練》,歡迎關注!

HDFS版本:3.1.1

今天主要給大家說一下HDFS檔案權限的問題。當一個普通使用者去通路HDFS檔案時,可能會報Permission denied的錯誤。那麼你會怎麼做呢?

像修改linux檔案似的,可能的做法有:

  • 修改檔案所有者
  • 直接将檔案賦予全部的權限,即rwx權限。

上面的做法雖然可以達到目的,但是相對來說對權限的把握不是很精準,不适用于生産環境。

本文主要講解HDFS的ACL(Access Control List)權限,通過hdfs超級使用者,來為普通使用者配置設定權限。

一、背景

如下圖所示,我使用hue使用者想建立一個簡單的hive表。由于hue使用者對/warehouse/tablespace/managed/hive目錄沒有權限,是以建立失敗了。

怎麼設定某個使用者生成hdfs檔案的權限_HDFS ACL權限設定特别說明:該專欄文章均來源自微信公衆号《大資料實戰演練》,歡迎關注!一、背景二、前提條件三、文法四、為hue使用者賦予權限五、總結關于HDFS shell指令,可以檢視官網連結:

這裡就用到了HDFS的ACL權限設定。

二、前提條件

需要确定hdfs-site.xml檔案的兩個配置項為true:

dfs.permissions.enabledtruedfs.namenode.acls.enabledtrue
           

三、文法

1. setfacl

Usage: hdfs dfs -setfacl -R|[--set  ]
           

設定檔案和目錄的通路控制清單(ACL)。

選項:

  • -b: 删除基本ACL條目以外的所有條目。保留使用者,組和其他條目以與權限位相容。
  • -k: 删除預設ACL。default
  • -R: 以遞歸方式将操作應用于所有檔案和目錄。常用。
  • -m: 修改ACL。新條目将添加到ACL,并保留現有條目。常用。
  • -x: 删除指定的ACL條目。保留其他ACL條目。常用。
  • —set: 完全替換ACL,丢棄所有現有條目。 acl_spec必須包含使用者,組和其他條目,以便與權限位相容。
  • acl_spec: 逗号分隔的ACL條目清單。
  • path: 要修改的檔案或目錄。

示例:

  • hdfs dfs -setfacl -m user:hadoop:rw- /file
  • hdfs dfs -setfacl -x user:hadoop /file
  • hdfs dfs -setfacl -b /file
  • hdfs dfs -setfacl -k /dir
  • hdfs dfs -setfacl —set user::rw-,user:hadoop:rw-,group::r—,other::r— /file
  • hdfs dfs -setfacl -R -m user:hadoop:r-x /dir
  • hdfs dfs -setfacl -m default:user:hadoop:r-x /dir

2. getfacl

Usage: hdfs dfs -getfacl [-R] 
           

顯示檔案和目錄的通路控制清單(ACL)。如果目錄具有預設ACL,則getfacl還會顯示預設ACL。

選項:

  • -R: 以遞歸方式列出所有檔案和目錄的ACL。
  • path: 要列出的檔案或目錄。

示例:

  • hdfs dfs -getfacl /file
  • hdfs dfs -getfacl -R /dir

四、為hue使用者賦予權限

使用hdfs超級使用者來設定acl:使用-m參數

sudo -u hdfs hdfs dfs -setfacl -m user:hue:rwx /warehouse/tablespace/managed/hive
           

檢視檔案目錄的acl權限:

hdfs dfs -getfacl /warehouse/tablespace/managed/hive
           

檔案acl權限如下圖所示:

怎麼設定某個使用者生成hdfs檔案的權限_HDFS ACL權限設定特别說明:該專欄文章均來源自微信公衆号《大資料實戰演練》,歡迎關注!一、背景二、前提條件三、文法四、為hue使用者賦予權限五、總結關于HDFS shell指令,可以檢視官網連結:

現在hue使用者就對/warehouse/tablespace/managed/hive這個目錄有了rwx全部權限了。

我們使用hue使用者建立hive表試試,成功了,如下圖所示:

怎麼設定某個使用者生成hdfs檔案的權限_HDFS ACL權限設定特别說明:該專欄文章均來源自微信公衆号《大資料實戰演練》,歡迎關注!一、背景二、前提條件三、文法四、為hue使用者賦予權限五、總結關于HDFS shell指令,可以檢視官網連結:

備注:

不過是僅限于hive這個目錄,對于裡面不是hue使用者建立的目錄或檔案,hue使用者還是無權通路。

如果需要通路遞歸的子檔案,可以使用-R參數,再次授權。

五、總結

其實這次分享的知識點很簡單,但是卻很實用。就安全的角度來看,比起chmod 777來說,也比較嚴謹。

還是希望大家多多練習本文講述的兩個指令:

  • setfacl
  • getfacl

看看這兩個指令的其它參數具體什麼意思。

關于HDFS shell指令,可以檢視官網連結:

http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/FileSystemShell.html

--END--

碼字不易,如果您覺得文章寫得不錯,請關注作者~ 您的關注是我寫作的最大動力

友情提示:原文排版精美,可點選分享連結檢視。