在使用root 用户新搭建好cdh后, 发现在想hdfs上写数据时老是报权限不够的问题
经过查找资料发现,root用户只是系统的超级管理员而不是hdfs的超级管理员, cdh安装后默认hdfs为超级管理员。如果想让用户有访问hdfs 权限提供了以下两种方法
(一)改变用户到hdfs用户组
由于HDFS文件系统的目录都属于supergroup用户组,所以就把用户添加到该用户组,即可解决很多权限问题。
1、在Linux执行如下命令增加supergroup
groupadd supergroup
2、如将用户root增加到supergroup中
usermod -a -G supergroup root
3、同步系统的权限信息到HDFS文件系统
sudo -u hdfs hdfs dfsadmin -refreshUserToGroupsMappings
4、查看属于supergroup用户组的用户
grep 'supergroup:' /etc/group
(二)将用户添加到hdfs ACL的访问权限列表
1、什么是 ACL
hdfs中的ACL与Linux中的ACL机制基本相同,都是用于为文件系统提供更精细化的权限控制。
2、添加用户对ACL访问权限
如果不想将root 加入到supergroup用户组并使该目录有rwx的权限,那么可以如下操作:
1、切换到 hdfs 用户
2、cdh 上设置 dfs.namenode.acls.enabled=true后重启hdfs。
3、使用hsdf dfs -getfacl / 命令能够得到当前/文件夹的权限。
4、hdfs dfs -setfacl -m user:root:rwx /
为root用户添加rwx权限
5、hdfs dfs -setfacl -m group:root:rwx /
为root用户组添加rwx权限。