成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

HDFS如何實(shí)現(xiàn)權(quán)限管理

這篇文章給大家分享的是有關(guān)HDFS如何實(shí)現(xiàn)權(quán)限管理的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)公司專注于海原企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。海原網(wǎng)站建設(shè)公司,為海原等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

1 HDFS的權(quán)限管理介紹

HDFS的權(quán)限管理分成2大部分:

  • 類(lèi)似linux的基本權(quán)限管理(粗粒度)

    針對(duì)管理對(duì)象分三種:user、group、other方式的權(quán)限管理方式

    • user:即目錄或文件的owner

    • group:即上述owner所在的組

    • other:其他用戶的統(tǒng)稱

  • ACL方式的權(quán)限管理(細(xì)粒度)

    可以精確控制到某個(gè)user、某個(gè)group具有對(duì)應(yīng)的權(quán)限

2種方式具體見(jiàn)下圖

HDFS如何實(shí)現(xiàn)權(quán)限管理

基本的權(quán)限方式如同linux中目錄或文件的權(quán)限管理方式,它是一種粗粒度的,不能控制到某一個(gè)用戶如t1。ACL的權(quán)限管理方式就可以,如下

user:t1:r-x

表示用戶t1具有讀和可執(zhí)行的權(quán)限(在HDFS中沒(méi)有可執(zhí)行的概念,暫且這么叫吧,這里的x權(quán)限就是進(jìn)入目錄和列出目錄下的文件或內(nèi)容的權(quán)限)

2 HDFS基本權(quán)限管理

創(chuàng)建一個(gè)文件或目錄,初始的基本權(quán)限是多少呢?經(jīng)歷如下2過(guò)程:

2.1 默認(rèn)的文件或目錄權(quán)限

創(chuàng)建文件或目錄的時(shí)候可以指定權(quán)限,沒(méi)有指定的話,就使用默認(rèn)的權(quán)限,如下

目錄:777

文件:666

2.2 應(yīng)用客戶端配置的uMask

注意:這個(gè)配置是客戶端可以配置的,即客戶端自己主宰創(chuàng)建文件或目錄的權(quán)限。

umask的作用:

就是對(duì)HDFS基本權(quán)限的限制,如022分別表示:0表示對(duì)owner沒(méi)有限制,2表示對(duì)group不允許有寫(xiě)權(quán)限,2表示對(duì)other不允許有寫(xiě)權(quán)限。

應(yīng)用客戶端配置的umask其實(shí)就是拿用戶設(shè)置的權(quán)限減去上述umask權(quán)限,就得到文件或目錄的最終權(quán)限了。如創(chuàng)建目錄,默認(rèn)777權(quán)限,然后減去umask權(quán)限022就等于755,即默認(rèn)情況下owner擁有讀寫(xiě)和可執(zhí)行權(quán)限,owner所在group擁有讀和可執(zhí)行權(quán)限,other擁有讀和可執(zhí)行的權(quán)限

下面重點(diǎn)來(lái)說(shuō)下umask的獲取過(guò)程:

  • 首先嘗試獲取配置文件中的fs.permissions.umask-mode屬性,如022,然后構(gòu)建出umask權(quán)限對(duì)象

  • 如果上述屬性沒(méi)有配置的話,獲取dfs.umask屬性(過(guò)時(shí)了,推薦用第一種方式),這種方式的umask是10進(jìn)制形式,如上述的022=2x8+2=18即這里的umask要配置成18

  • 如果上述屬性也沒(méi)有配置的話,默認(rèn)使用18即022來(lái)構(gòu)建出umask對(duì)象

至此,在沒(méi)有ACL設(shè)置的情況下創(chuàng)建文件或目錄的權(quán)限即上述過(guò)程了。

3 HDFS ACL權(quán)限管理

3.1 ACL權(quán)限管理模型

AclEntry對(duì)象,如

user:t1:r-x、group:g1:rwx、other::--x、mask::r-x

default:user:t1:r-x、default:group:g1:r-x、default:other::r-x、default:mask::r-x

包含4部分內(nèi)容:

public class AclEntry {
  private final AclEntryType type;
  private final String name;
  private final FsAction permission;
  private final AclEntryScope scope;
}
  • name:即名稱,如上述的t1、g1,也可以為null如上述的mask::r-x

  • FsAction:權(quán)限信息,總共有如下權(quán)限

    NONE("---"),
    EXECUTE("--x"),
    WRITE("-w-"),
    WRITE_EXECUTE("-wx"),
    READ("r--"),
    READ_EXECUTE("r-x"),
    READ_WRITE("rw-"),
    ALL("rwx");

  • AclEntryScope:枚舉值,值為ACCESS、DEFAULT

    ACCESS:表示該條ACL是針對(duì)本目錄或文件的,前綴省略不寫(xiě)

    DEFAULT:只存在于目錄中,前綴是default:,一旦在該目錄中創(chuàng)建子目錄或文件,子目錄或文件的ACL就會(huì)繼承該條ACL權(quán)限。即如果父目錄中含有一個(gè)default:user:t1:r-x記錄,則在創(chuàng)建子目錄或者文件的時(shí)候,都會(huì)自動(dòng)加上一條user:t1:r-x的記錄

  • AclEntryType:枚舉值,值為USER、GROUP、OTHER、MASK

    USER:如上述的user:t1:r-x表示t1是一個(gè)用戶

    GROUP:如上述的group:g1:rwx表示g1是一個(gè)組

    OTHER:如上述的other::--x表示剩余的所有用戶的統(tǒng)稱

    MASK:如上述的mask::r-x,主要用于過(guò)濾,如上述的group:g1:rwx,雖然這里是rwx權(quán)限,但是真正在判定權(quán)限的時(shí)候,還是要與mask::r-x進(jìn)行and操作,即過(guò)濾了w權(quán)限,所以group:g1:rwx的實(shí)際權(quán)限是group:g1:r-x,如下圖所示

    HDFS如何實(shí)現(xiàn)權(quán)限管理

    其實(shí)mask只作用在name值不為null的user和所有的group上,這個(gè)后面再詳細(xì)說(shuō)明

基本權(quán)限也可以轉(zhuǎn)化成ACL權(quán)限,例子如基本權(quán)限如drwxr-xr-x,對(duì)應(yīng)的ACL權(quán)限如

user::rwx 對(duì)應(yīng)user權(quán)限

(group::r-x)對(duì)應(yīng)group權(quán)限

mask::r-x 對(duì)應(yīng)group權(quán)限

other::r-x 對(duì)應(yīng)other權(quán)限

上述修改基本權(quán)限或者修改對(duì)應(yīng)的ACL權(quán)限都會(huì)相互影響。有一個(gè)例外:上述的group::r-x在創(chuàng)建的時(shí)候依據(jù)基本權(quán)限中的group權(quán)限,但是直接修改ACL中的group::r-x權(quán)限,并不直接影響基本權(quán)限中的group權(quán)限,這也是比較坑的地方,即group::r-x權(quán)限被造出來(lái)之后就像被遺棄了。

3.2 ACCESS scope中的mask

3.2.1 mask值的主動(dòng)修改

ACCESS scope中的mask對(duì)應(yīng)的權(quán)限就是HDFS基本權(quán)限中的group權(quán)限。如下所示:

HDFS如何實(shí)現(xiàn)權(quán)限管理

所以如下2種方式都可以更改基本權(quán)限中的group權(quán)限:

  • hdfs dfs -chmod 751

    如修改基本權(quán)限為751,則mask取group權(quán)限則為5,即r-x權(quán)限,如下圖所示

    HDFS如何實(shí)現(xiàn)權(quán)限管理

  • 直接修改mask acl中的權(quán)限值

    如hdfs dfs -setfacl -m mask::--x /user/lg/acl,修改了mask值,同時(shí)也修改了基本權(quán)限中的group權(quán)限

    HDFS如何實(shí)現(xiàn)權(quán)限管理

3.2.2 mask值的被動(dòng)重新計(jì)算

當(dāng)acl新添加或者刪除的時(shí)候,都會(huì)觸發(fā)mask的重新計(jì)算,計(jì)算方式就是:

所有name不為null的user類(lèi)型的acl和所有的group類(lèi)型的acl的權(quán)限取并集

例子如下:

HDFS如何實(shí)現(xiàn)權(quán)限管理

這時(shí)候基本權(quán)限中的group權(quán)限也會(huì)隨著mask的改變而改變。

目前到這里總結(jié)下mask:

主要設(shè)計(jì)成對(duì)其他user和group類(lèi)型的權(quán)限過(guò)濾,你主動(dòng)去設(shè)置mask,此時(shí)會(huì)起到一定的過(guò)濾作用,

但是一旦重新添加或者刪除acl的時(shí)候,mask的值就被重新計(jì)算了,也就是說(shuō)你之前設(shè)置的沒(méi)啥用了,這個(gè)就意味著mask沒(méi)啥鳥(niǎo)用,當(dāng)你無(wú)意間執(zhí)行chmod修改權(quán)限,就可能會(huì)造成別人如t1用戶突然少了某些權(quán)限,一旦新增一個(gè)t2用戶的acl權(quán)限,t1用戶的權(quán)限又突然回來(lái)了,這個(gè)也算是個(gè)坑吧,不知道為啥這樣設(shè)計(jì),歡迎來(lái)討論。

3.3 DEFAULT scope中的mask

DEFAULT scope中的mask和ACCESS scope中的mask基本類(lèi)似,都是用于過(guò)濾權(quán)限。

3.3.1 mask值主動(dòng)修改

上述ACCESS scope中mask值有2種方式,而DEFAULT scope中只有一種方式,就是

直接修改mask acl中的權(quán)限值

如hdfs dfs -setfacl -m default:mask::--x /user/lg/acl

HDFS如何實(shí)現(xiàn)權(quán)限管理

修改之后上述default:user:t1:r-x 的實(shí)際權(quán)限就只是 --x了,即與default mask執(zhí)行and操作的結(jié)果

3.3.2 mask值被重新計(jì)算

當(dāng)acl新添加或者刪除的時(shí)候,都會(huì)觸發(fā)mask的重新計(jì)算,計(jì)算方式就是:

所有name不為null的user類(lèi)型的acl和所有的group類(lèi)型的acl的權(quán)限取并集。這里不再說(shuō)明了,見(jiàn)ACCESS scope中的mask重新計(jì)算。

3.4 過(guò)程分析

前面介紹的是一些基本概念和理論,現(xiàn)在來(lái)看看下面幾個(gè)過(guò)程具體會(huì)發(fā)生什么操作

3.4.1 權(quán)限驗(yàn)證過(guò)程

例子: 驗(yàn)證用戶u1是否對(duì)路徑/user/lg/acl有讀權(quán)限

  • 1 檢查u1是否是該路徑的owner

    如果是owner,則直接使用基本權(quán)限中的user權(quán)限來(lái)判定,代碼如下

    HDFS如何實(shí)現(xiàn)權(quán)限管理

  • 2 遍歷該路徑的所有ACCESS scope的ACL權(quán)限

    如果當(dāng)前ACL類(lèi)型是user,并且用戶名匹配,如user:u1:r-x,在判定時(shí)還需要將該r-x權(quán)限和基本權(quán)限中的group權(quán)限(即mask權(quán)限)執(zhí)行and操作來(lái)作為實(shí)際的權(quán)限,如果此時(shí)mask::--x,執(zhí)行and操作之后實(shí)際權(quán)限變成了--x權(quán)限,即仍然沒(méi)有讀權(quán)限

    如果當(dāng)前ACL類(lèi)型是group,并且該u1用戶所屬的groups中包含該group,同上述一樣,仍然需要將該條ACL權(quán)限與基本權(quán)限中的group權(quán)限(即mask權(quán)限)執(zhí)行and操作來(lái)判定最終的權(quán)限

    代碼如下:

    HDFS如何實(shí)現(xiàn)權(quán)限管理

  • 3 一旦該用戶在上述權(quán)限中都沒(méi)匹配到,則使用基本權(quán)限中的other權(quán)限來(lái)判定

    注意這里的沒(méi)有匹配到的含義:如果有user:u1:--x權(quán)限,即匹配到了用戶,但是該ACL并沒(méi)有讀權(quán)限,此時(shí)并不會(huì)去執(zhí)行這部分的other權(quán)限

    HDFS如何實(shí)現(xiàn)權(quán)限管理

  • 4 以上還未能找到相關(guān)權(quán)限則判定該用戶無(wú)權(quán)限

3.4.2 創(chuàng)建文件或目錄

  • 1 如果創(chuàng)建文件或者目錄時(shí)沒(méi)有指定基本權(quán)限權(quán)限,則使用默認(rèn)的基本權(quán)限權(quán)限

    目錄:777

    文件:666

  • 2 在上述基本權(quán)限的基礎(chǔ)上應(yīng)用客戶端配置的umask權(quán)限,默認(rèn)是022,則目錄和文件分別變成

    目錄:755

    文件:644

  • 3 如果父目錄中含有DEFAULT scope的ACL權(quán)限信息

    default:user::rwx和上述文件或目錄基本權(quán)限中的user權(quán)限執(zhí)行and操作作為最終的基本權(quán)限中的user權(quán)限 default:mask::r-x和上述文件或目錄基本權(quán)限中的group權(quán)限執(zhí)行and操作作為最終的基本權(quán)限中的group權(quán)限 default:other::--x和上述文件或目錄基本權(quán)限中的other權(quán)限執(zhí)行and操作作為最終的基本權(quán)限中的other權(quán)限

    例子如下:

    HDFS如何實(shí)現(xiàn)權(quán)限管理

    default中的其他權(quán)限直接作為子目錄或文件的ACCESS權(quán)限

    代碼見(jiàn):

    HDFS如何實(shí)現(xiàn)權(quán)限管理

  • 4 如果創(chuàng)建的是子目錄,則將全部的default權(quán)限復(fù)制給子目錄作為子目錄的default權(quán)限

  • 5 然后重新計(jì)算子文件或目錄的基本權(quán)限(因?yàn)樯鲜鲞^(guò)程可能會(huì)修改基本權(quán)限)

    代碼見(jiàn)

    HDFS如何實(shí)現(xiàn)權(quán)限管理

3.4.3 修改ACL

新增或刪除或修改ACL操作的時(shí)候都會(huì)重新計(jì)算mask的值

ACCESS scope中的ACL變動(dòng)會(huì)重新計(jì)算ACCESS scope中的mask

DEFAULT scope中的ACL變動(dòng)會(huì)重新計(jì)算DEFAULT scope中的mask

mask的計(jì)算方式上面就說(shuō)明了。

感謝各位的閱讀!關(guān)于“HDFS如何實(shí)現(xiàn)權(quán)限管理”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

新聞標(biāo)題:HDFS如何實(shí)現(xiàn)權(quán)限管理
網(wǎng)站地址:http://jinyejixie.com/article32/iejhpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、ChatGPT、定制網(wǎng)站服務(wù)器托管、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
运城市| 黔南| 饶河县| 宝坻区| 天峨县| 广宗县| 界首市| 济源市| 扶绥县| 临沭县| 永春县| 罗源县| 大厂| 类乌齐县| 华宁县| 临海市| 福泉市| 建昌县| 平昌县| 闻喜县| 荆门市| 韩城市| 泰兴市| 沅陵县| 精河县| 行唐县| 卓资县| 中牟县| 永昌县| 漠河县| 万全县| 富裕县| 阿城市| 龙游县| 迁安市| 澄城县| 墨竹工卡县| 邳州市| 长春市| 沿河| 聂拉木县|