簡(jiǎn)介
Hadoop從2.4.0版本開(kāi)始支持hdfs的ACL
ACL(Access Control Lists)
基本命令操作:
hdfs dfs -getfacl [-R] ?獲取目錄和文件的ACL 信息
hdfs dfs -setfacl [-R] [-b |-k -m |-x ] |[--set ] ?設(shè)置文件和目錄的ACL信息
hdfs dfs -ls 當(dāng)ls的權(quán)限位輸出以+結(jié)束時(shí),那么該文件或目錄正在啟用一個(gè)ACL。
配置信息

機(jī)制和測(cè)試
hdfs 默認(rèn)是開(kāi)啟文件訪(fǎng)問(wèn)權(quán)限的,按照rwx 來(lái)進(jìn)行判斷是否有讀寫(xiě)執(zhí)行權(quán)限。然后根據(jù)用戶(hù)擁有者, 同組用戶(hù), 非同組用戶(hù) 來(lái)進(jìn)行權(quán)限管理
我們可以通過(guò)bash -c users ?和 bash -c groups 獲取用戶(hù) 和 組
(1) 創(chuàng)建文件
echo "hell" > 1.txt
hadoop fs -mkdir /acl; hadoop fs -put 1.txt /acl
(2) 更改用戶(hù)組 和 權(quán)限
創(chuàng)建文件和目錄的時(shí)候默認(rèn)組為supergroup, 文件夾的權(quán)限是755 ,文件的權(quán)限是644.
hadoop fs -chmod -R 750 ?/acl
hadoop fs -chown -R bfd_hz:bfd_hz /acl
(3) 用戶(hù)擁有者,同組用戶(hù), 非同組用戶(hù)測(cè)試。
用戶(hù)和組的創(chuàng)建省略, 測(cè)試的過(guò)程中三個(gè)用戶(hù) bfd_hz ? baseline ? wenting , ? bfd_hz 和 wenting 是同組用戶(hù),
baseline 單獨(dú)一個(gè)組, 文件的由bfd_hz 創(chuàng)建,權(quán)限如下:
(4) ACL讓非同組的用戶(hù)也能訪(fǎng)問(wèn)此文件
注意點(diǎn):用戶(hù)名和組 要和 hadoop 上面的組對(duì)應(yīng), 比如默認(rèn)創(chuàng)建的文件組是supergroup,
如果不設(shè)置成bfd_hz, wenting此時(shí)操作文件也不能執(zhí)行,user -c groups 是bfd_hz, 和 supergroup不相等。 此時(shí)就導(dǎo)致不屬于同組用戶(hù)
關(guān)于一個(gè)文件的組關(guān)系:如果根目錄,沒(méi)有繼承來(lái)源,默認(rèn)supergroup, 如果是子目錄,繼承父目錄的組
其他話(huà)題-->hive 中創(chuàng)建表的時(shí)候權(quán)限和組問(wèn)題:https://cwiki.apache.org/confluence/display/Hive/Permission+Inheritance+in+Hive
參考資料:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html