新聞中心
1、背景
在我們開發(fā)的過程中有這么一種場景,/projectA目錄是hadoopdeploy用戶創(chuàng)建的,他對這個目錄有wrx權(quán)限,同時這個目錄屬于supergroup,在這個組中的用戶也具有這個目錄的wrx權(quán)限,對于其他人,不可訪問這個目錄?,F(xiàn)在有這么一個特殊的用戶root,我想root用戶可以訪問這個目錄,在不修改root用戶組和其他人的權(quán)限的情況下,還有什么方式可以實(shí)現(xiàn)這個功能呢?

為道縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及道縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、做網(wǎng)站、道縣網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
背景
由上圖可以,root用戶想訪問/projectA目錄,在hdfs中可以通過acl來實(shí)現(xiàn)。
2、環(huán)境準(zhǔn)備
# 創(chuàng)建目錄
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -mkdir /projectA
# 列出根目錄下的文件夾
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x - hadoopdeploy supergroup 0 2023-05-24 20:35 /projectA
# 將 /projectA 目錄的權(quán)限修改成 770, 即其他人沒有這個目錄的訪問權(quán)限
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -chmod 770 /projectA
# 再次查看發(fā)現(xiàn)修改成功
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -ls /
Found 1 items
drwxrwx--- - hadoopdeploy supergroup 0 2023-05-24 20:35 /projectA
[hadoopdeploy@hadoop01 ~]$環(huán)境準(zhǔn)備
從上述代碼中可知,我們創(chuàng)建了一個/projecetA的目錄,且給這個目錄的權(quán)限為770,那么其他人對這個目錄應(yīng)該是沒有訪問權(quán)限的。 通過上述圖片可知,我們用root用戶上傳文件,發(fā)現(xiàn)沒有權(quán)限。
3、開啟acl權(quán)限
3.1 修改hdfs-site.xml
dfs.namenode.acls.enabled
true
開啟acl
注意:在低版本的hadoop上默認(rèn)是禁用的,高版本默認(rèn)是開啟的。
3.2 重啟hdfs集群
[hadoopdeploy@hadoop01 ~]$ stop-dfs.sh
Stopping namenodes on [hadoop01]
Stopping datanodes
Stopping secondary namenodes [hadoop03]
[hadoopdeploy@hadoop01 ~]$ start-dfs.sh
Starting namenodes on [hadoop01]
Starting datanodes
Starting secondary namenodes [hadoop03]
[hadoopdeploy@hadoop03 ~]$3.3 使用acl給root用戶授權(quán)
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -setfacl -m user:root:rwx /projectA
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
user:root:rwx
group::rwx
mask::rwx
other::---
[hadoopdeploy@hadoop01 ~]$使用acl給root用戶授權(quán)
3.4 使用 root 用戶測試文件上傳
[root@hadoop01 ~]# hdfs dfs -put anaconda-ks.cfg /projectA
[root@hadoop01 ~]# hdfs dfs -ls /projectA
Found 1 items
-rw-r--r-- 2 root supergroup 1151 2023-05-24 21:10 /projectA/anaconda-ks.cfg
[root@hadoop01 ~]#可以看到文件上傳成功了。
4、acl的一些簡單命令
acl語法
hdfs dfs -setfacl -m user:root:rwx /projectA對root用戶設(shè)置hdfs dfs -setfacl -m group:root:rwx /projectA對root組設(shè)置
4.1 設(shè)置acl
hdfs dfs -setfacl -m user:root:rwx /projectA將/projectA這個目錄授予root用戶rwx權(quán)限。
4.2 查看acl
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
user:root:rwx
group::rwx
mask::rwx
other::---
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -ls /
Found 1 items
drwxrwx---+ - hadoopdeploy supergroup 0 2023-05-24 21:10 /projectA
[hadoopdeploy@hadoop01 ~]$drwxrwx---+ 這個+表示有acl權(quán)限
4.3 移除某個用戶的acl
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -setfacl -x user:root /projectA
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
group::rwx
mask::rwx
other::---
[hadoopdeploy@hadoop01 ~]$移除某個用戶的acl
4.4 刪除該目錄所有的acl權(quán)限
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -setfacl -b /projectA
[hadoopdeploy@hadoop01 ~]$ hdfs dfs -getfacl /projectA
# file: /projectA
# owner: hadoopdeploy
# group: supergroup
user::rwx
group::rwx
other::---
[hadoopdeploy@hadoop01 ~]$5、參考鏈接
1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#setfacl
當(dāng)前標(biāo)題:HDFS中Acl權(quán)限管理的簡單實(shí)用,你學(xué)會了嗎?
標(biāo)題路徑:http://www.fisionsoft.com.cn/article/cohegei.html


咨詢
建站咨詢
