HDFS权限设置 \ HDFS涉及ACLs的命令
本文主要參考:https://www.cnblogs.com/royfans/p/7326859.html
https://www.cppentry.com/bencandy.php?fid=115&id=206011
HDFS權(quán)限設(shè)置
1.
hdfs權(quán)限檢查啟用,需要在hdfs-site.xml中做如下配置:
<property><name>dfs.permissions.enabled</name><value>true</value> </property>1.1. 默認情況下,用戶在HDFS上創(chuàng)建的文件和目錄的權(quán)限是rwxr-xr-x,即732,x表示有l(wèi)s權(quán)限
默認的權(quán)限可以通過如下配置屬性在hdfs-site.xml中進行配置
<property><name>fs.permissions.umask-mode</name><value>032</value> </property>032表示屏蔽位,默認權(quán)限是777-屏蔽位對應(yīng)的數(shù)字,因此,777-032=745, 745是權(quán)限位
r: 4 w:2 x:1745表示rwx r-- r-x
2. /user/目錄下的用戶目錄,通過設(shè)置為754,比如
drwxr-xr-x - yarn supergroup 0 2016-05-04 14:21 /user/yarn drwxr-xr-x - spark supergroup 0 2016-05-17 19:09 /user/spark drwxr-xr-x - hdfs supergroup 0 2016-06-07 14:53 /user/hive drwx------ - hbase supergroup 0 2016-03-18 20:26 /user/hbase表示只有所屬用戶具有寫權(quán)限
3.啟動NameNode進程的用戶就是HDFS的超級用戶,可以對其它用戶創(chuàng)建的文件或者目錄進行chmod
而普通用戶是沒有權(quán)限對其它用戶的用戶或者目錄進行chmod
4.改變文件或者目錄所屬的用戶名和密碼
5. 授權(quán)
hdfs dfs -setfacl可以將某個文件或者目錄的讀寫執(zhí)行權(quán)限授權(quán)給任意named用戶名或者組,這是更細力度的權(quán)限控制
首先在hdfs-site.xml中添加如下配置以啟用HDFS acl功能
將/user/yuzt的讀寫執(zhí)行權(quán)限賦值給hdfs用戶,user表示hdfs是一個用戶,而不是group
通過上面的操作,用戶hdfs可以在/user/yuzt創(chuàng)建文件后者目錄了。
ACL
開啟ACLs
默認情況下ACLs是關(guān)閉的,想要開啟此功能需要在hdfs-site.xml的配置項里找到dfs.namenode.acls.enabled把屬性設(shè)為true才可以。重要:Namenode節(jié)點必須要設(shè)定的用戶或用戶組
<property><name>dfs.namenode.acls.enabled</name><value>true</value> </property>getfacl
getfacl用于查看一個文件/目錄的ACL狀態(tài),例如:
[root@ecs1 tao]# hadoop dfs -getfacl /user/tao DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.# file: /user/tao # owner: tao # group: supergroup user::rwx group::rwx other::rwxsetfacl
基本用法
假設(shè),我們有一個HDFS目錄/user/tao/xt-data,它目前的權(quán)限為drwxrwxr-x tao supergroup。我希望讓另一個用戶Hbase(不屬于任何group)對該目錄有rwx的權(quán)限,那么可以如下操作:
hdfs dfs -setfacl [-R] [-b|-k -m|-x <acl_spec> <path>]|[--set <acl_spec> <path>] <br><!-- COMMAND OPTIONS <path>: 路徑 -R: 遍歷路徑里的所有文件。 -b: 撤銷除了基本用戶和組權(quán)限以外的所有權(quán)限。 -k: 撤銷默認的ACL設(shè)置。 -m: 添加新的權(quán)限來使用此ACL。不影響現(xiàn)有權(quán)限。 -x: 只撤銷指定的ACL。 <acl_spec>: 逗號分隔的ACL權(quán)限列表。 --set: 使用該選項指定的路徑完全取代現(xiàn)有的ACL。之前的ACL將不再適用。 --> [tao@ecs3 ~]$ hadoop dfs -setfacl -m user:hbase:rwx /user/tao/xt-data[tao@ecs3 ~]$ hadoop dfs -getfacl /user/tao/xt-data DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.# file: /user/tao/xt-data # owner: tao # group: supergroup user::rwx user:hbase:rwx group::r-x mask::rwx other::r-x[tao@ecs3 ~]$ su[root@ecs3 tao]# sudo -u hbase hadoop dfs -mkdir /user/tao/xt-data/testDir[root@ecs3 tao]# sudo -u hbase hadoop dfs -ls /user/tao/xt-data DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.Found 1 items drwxr-xr-x - hbase supergroup 0 2015-05-22 16:33 /user/tao/xt-data/testDir [root@ecs3 tao]#可以看到,現(xiàn)在用戶hbase可以在/user/tao/xt-data中新建一個目錄testDir了。那么,這個新建的目錄的權(quán)限是什么呢?
[root@ecs3 tao]# hadoop dfs -getfacl /user/tao/xt-data/testDir DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.# file: /user/tao/xt-data/testDir # owner: hbase # group: supergroup user::rwx group::r-x other::r-x可以看到,這個新建的目錄與其他普通的目錄在權(quán)限是一樣的。如果想使得新建的目錄/文件的ACL也滿足我們的要求,可以使用default acl來實現(xiàn)。
關(guān)于權(quán)限標志位的順序: 在命令hadoop dfs -setfacl -m user:hbase:rwx /user/tao/xt-data中,權(quán)限標志位rwx的順序不能改變,否則會報錯:-setfacl: Invalid permission in 正確的寫法有: rwx, r-x, -r-, -rx等; 錯誤的寫法有:wrx,w-x等。Default ACL
可以為某個目錄設(shè)置一個默認的ACL權(quán)限,使得以后在該目錄中新建文件或者子目錄時,新建的文件/目錄的ACL權(quán)限都是之前設(shè)置的default ACLs。
例如,現(xiàn)在已經(jīng)有了一個HDFS目錄/user/tao,其當(dāng)前的ACL狀態(tài)為:
[root@ecs1 tao]# hadoop dfs -getfacl /user/tao # file: /user/tao # owner: tao # group: supergroup user::rwx group::rwx other::rwx我們想將其default acl權(quán)限設(shè)置為user:hbase:rwx,用命令:
[root@ecs1 tao]# sudo -u tao hadoop dfs -setfacl -m default:user:hbase:rwx /user/tao[root@ecs1 tao]# hadoop dfs -getfacl /user/tao # file: /user/tao # owner: tao # group: supergroup user::rwx group::rwx other::rwx default:user::rwx default:user:hbase:rwx default:group::rwx default:mask::rwx default:other::rwx檢查是否生效:
[root@ecs1 tao]# sudo -u tao hadoop dfs -mkdir /user/tao/testDir[root@ecs1 tao]# hadoop dfs -getfacl /user/tao/testDir # file: /user/tao/testDir # owner: tao # group: supergroup user::rwx user:hbase:rwx #effective:r-x group::rwx #effective:r-x mask::r-x other::r-x default:user::rwx default:user:hbase:rwx default:group::rwx default:mask::rwx default:other::rwx其它
如果要將以下權(quán)限的:
drwxr-xr-x - hive hdfs 0 2020-06-04 14:39 /tzqtoto_45改成:
drwx------ - hive hdfs 0 2020-06-04 14:39 /tzqtoto_45所需要的命令是:
hdfs dfs -setfacl -R -m group::--- /tzqtoto_45 hdfs dfs -setfacl -R -m other::--- /tzqtoto_45總結(jié)
以上是生活随笔為你收集整理的HDFS权限设置 \ HDFS涉及ACLs的命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 退伍军人和退役军人有何区别
- 下一篇: Windows10避开注册的方式安装so