参考:

hdfs权限: 官网
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_permissions_guide.html

hdfs权限:

http://dyingbleed.com/hdfs-7/   GG

开启和关闭检查两个地方:

1/ 认证方式

自带的simple认证-LMLPHP

2/ 勾选即开启,去掉即关闭

自带的simple认证-LMLPHP

开启之后,不在supergroup的用户是没法访问hdfs:

https://www.cnblogs.com/silgogo/p/10677752.html

[root@manager ~]# groupadd supergroup
[root@manager ~]# usermod -a -G supergroup feng.feng
[root@manager ~]# su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"
Refresh user to groups mapping successful

查看用户所在组:
groups xx
[root@zhep-opay-temp-1 ~]# groups root
root : root supergroup

深入测试:

除hdfs用户,其它用户只有查看和在/tmp下写入的权限.

在root帐号下执行:
sudo -u hdfs 命令 #用超级用户来执行命令
如:
#在除tmp外的hdfs目录上传文件
sudo -u hdfs hdfs dfs -put 1.txt /
#或者改目录的属主:
sudo -u hdfs hdfs dfs -chown dev3:supergroup /user
sudo -u hdfs hdfs dfs -chown hdfs:supergroup /user

drwxr-x--- hdfs supergroup
第一位d 说明 /data 是一个目录
第二至四位rwx说明 hdfs 用户有 /data 目录的读(R)、写(W)、执行(X)权限
第五至七位r-x说明 supergroup组用户有/data目录的读(R)和执行(X)权限
第八至十位---说明其它人没有任何权限

1/ 修改文件或目录 owner,执行命令
sudo -u hdfs hadoop fs -chown -R root /test
hadoop fs -chown dyingbleed /data/users.csv

2/ 修改文件或目录 group,执行命令:
hadoop fs -chgrp -R dev /data
hadoop fs -chgrp dev /data/users.csv
3/ 修改文件或目录权限,执行命令:
sudo -u hdfs hadoop fs -chmod -R 774 /test
hadoop fs -chmod 777 /data/users.csv

r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0
rwx r-x r- - :754
rwx rwx r- - :774
rwx rwx rwx :777

3/ 改变文件或目录的组
chgrp staff /u             #Change the group of /u to "staff".
chgrp -hR staff /u      #Change the group of /u and subfiles to "staff"

1/ 给目录/test赋权,只能supergroup组的用户能读写
#根下建一个test目录
sudo -u hdfs hdfs dfs -mkdir /data
sudo -u hdfs hdfs dfs -touch /data/1.txt
#给/test授予supergroup的权限
sudo -u hdfs hadoop fs -chmod -R 774 /data

但不生效,需要赋予777在supergroup的用户才可以写.
跟映射方式有关系
通过身份认证之后,如何知晓用户所属的组呢?HDFS 提供了三种组映射机制:
基于 JNI 的组映射: org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback
基于 Shell 的组映射:org.apache.hadoop.security.ShellBasedUnixGroupsMapping
基于 LDAP 的组映射:org.apache.hadoop.security.LdapGroupsMapping

ACL
编辑配置文件 hfds-site.xml 文件:

<configuration>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</configuration>
重启集群使得配置生效。

获取文件和目录 ACL,执行命令:

hadoop fs -getfacl /data
显示:

# file: /data
# owner: hdfs
# group: supergroup
user::rwx
group::r-x
mask::rwx
other::---
为 dev 组增加读、写、执行权限,执行命令:

hadoop fs -setfacl -R -m group:dev:rwx /data
移除 dev 组权限,执行命令:

hadoop fs -setfacl -R -x group:dev /data

05-12 02:17