版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載溯革。http://www.reibang.com/p/3d7028a5b335
What is ACL
ACL(Access Control Lists?,訪問控制列表)绘雁,Hadoop中的acl與unix中的acl機(jī)制(posix模型)基本相同歌殃,可以為文件或目錄提供更精細(xì)化的權(quán)限訪問控制太防。
對(duì)于每個(gè)文件或目錄而言扫步,權(quán)限管理分為3個(gè)不同的用戶類:owner魔策,group和others。每個(gè)用戶類有3種不同的訪問權(quán)限:read河胎,write闯袒,execute。
當(dāng)一個(gè)用戶試圖訪問一個(gè)文件系統(tǒng)對(duì)象時(shí)游岳,hdfs會(huì)根據(jù)該用戶所對(duì)應(yīng)的權(quán)限進(jìn)行驗(yàn)證:如果該用戶是其所有者(owner)政敢,那么hdfs將檢查owner類權(quán)限;如果用戶不是所有者胚迫,而是group組的成員喷户,那么hdfs將檢查group組類權(quán)限;否則晌区,hdfs會(huì)檢查other其他類權(quán)限摩骨。
Hadoop確定用戶身份方式
級(jí)別一:在Kerberos模式下,客戶端進(jìn)程身份由kerberos憑據(jù)確定朗若。用戶通過kinit工具得到(ticket-granting-ticket)TGT恼五,且使用klist確定當(dāng)前的principal。比如通過kinit -kt a.keytaba@COMPANY.COM哭懈,將映射該principal到HDFS的用戶a灾馒。
級(jí)別二:當(dāng)集群未啟用kerberos時(shí),客戶端進(jìn)程的身份只要在Active NameNode上通過了HDFS上相關(guān)文件與目錄的權(quán)限驗(yàn)證即可遣总。
級(jí)別三:當(dāng)客戶端進(jìn)程的身份不存在于hdfs上時(shí)睬罗,由操作系統(tǒng)確定。
這種安全模型足以滿足大量的安全需求旭斥。但當(dāng)新的需求到來(lái)容达、業(yè)務(wù)復(fù)雜度提升時(shí),需要將hdfs文件資源進(jìn)行更細(xì)粒度的分配垂券,簡(jiǎn)單的posix模型已無(wú)法滿足花盐。
Hdfs ACLs能夠?yàn)樘囟ㄓ脩裘蚪M指定更細(xì)粒度的文件權(quán)限,而不僅僅是文件的所有者和組菇爪。
要使用acls算芯,首先需要在namenode上啟用acls。操作步驟:
1凳宙、CM界面中修改hdfs參數(shù):dfs.namenode.acls.enabled?為?enable熙揍。
2、重啟HDFS服務(wù)氏涩。
否則届囚,會(huì)報(bào)錯(cuò)如下:
ACL實(shí)戰(zhàn)
一、為用戶添加acl權(quán)限
二削葱、為用戶組添加acl權(quán)限
三奖亚、限制用戶組訪問目錄
Default ACL
可以為某個(gè)目錄設(shè)置一個(gè)默認(rèn)的ACL權(quán)限,使得以后在該目錄中新建文件或者子目錄時(shí)析砸,新建的文件/目錄的ACL權(quán)限都是之前設(shè)置的default ACLs昔字。
使用default acl新建一個(gè)hdfs用戶bdhbdkas,它屬于bdhbdkasgrp組首繁,擁有/user/目錄下的編輯權(quán)限作郭。
當(dāng)然,如果需要添加一個(gè)hdfs的管理員用戶弦疮,那么可以在hdfs——>配置中夹攒,添加用戶所屬組。之后需要重啟hdfs服務(wù)生效胁塞。