HDFS权限管控
HDFS在权限管控时,提供类似POSIX系统的文件和目录权限模型,这里称为普通权限管控。它和在linux系统上的操作类似,每个文件或目录都有owner、group、other三种角色,它们拥有不同的权限。权限分为r、w、x三种。rwx权限,也可以使用数字4、2、1表示。
HDFS可以通过开启配置支持POSIX ACLs,提供更加灵活的授权。ACLs的开启,需要在hdfs-site.xml中进行设置:
代码语言:javascript复制<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
普通权限管控
对于普通的权限管控操作,首先需要在linux本地创建用户和用户组。
代码语言:javascript复制# 创建用户组big
groupadd big
# 创建用户big,并指定用户组为big
useradd -m -g big big
# 检测用户的创建情况
id big
然后在HDFS上创建需要进行权限管控的目录/big。
代码语言:javascript复制hadoop fs -mkdir /big
普通权限的管控较为简单,主要是通过更改owner、group、other的权限,或者直接更改目录或文件的owner和group来完成。
一般来说,为新用户进行赋权,直接修改other权限最为简单,但因此也开放了权限,风险较大。
代码语言:javascript复制hadoop fs -chmod o r /big
如果是单一用户,较为推荐的是直接更改owner和group,如果是多用户,则将新用户直接添加到所属的group中即可。然后通过设置owner、group、other的权限来保证安全。
代码语言:javascript复制# 更改目录所属的owner、group
hadoop fs -chown big:big /big
# 设置owner、group、other的权限
hadoop fs -chmod -R 750 /big
# 多用户,则将用户直接添加到group即可
useradd -m -g big big_new
ACLs权限管控
普通权限管控,在多用户的情况下,将新用户直接添加到用户组中以达到授权的目的。但这样的话,所有用户的权限与group保持一致,无法单独定义某个用户的权限。
此时,可以开启ACLs权限管控,单独为各个用户进行权限设置。
在Hive操作中,有这样的一个场景,当安装了HUE组件后,希望通过HUE来直接向Hive发送SQL执行。但HUE使用的是自己的用户,假设为hue,希望将Hive数据目录为hue用户开放权限,以便进行数据操作。
首先,需要查看一下目录的acls权限:
代码语言:javascript复制hadoop fs -getfacl /user/hive/warehouse
这里需要注意的是,acl权限中的mask权限,它限制了acl user、acl group,以及group的最高权限,但它不影响owner的权限。
假设mask权限为r–,则除了owner,为当前目录添加的acl用户、acl用户组、group,最高的权限只能是r–。
所以为了新用户的赋权,最好先修改一下mask值,这里开放了rwx所有权限。
代码语言:javascript复制hadoop fs -setfacl -R -m mask::rwx /user/hive/warehouse
然后授权hue用户和hue用户组对warehouse目录的rwx操作权限。
代码语言:javascript复制#授予hue用户对warehouse文件夹rwx权限
hadoop fs -setfacl -m user:hue:rwx /user/hive/warehouse
#授予hue用户组对warehouse文件夹rwx权限
hadoop fs -setfacl -m group:hue:rwx /user/hive/warehouse
# 查看权限设置
hadoop fs -getfacl /user/hive/warehouse
最后,需要注意default acl的设置,在warehouse目录下新创建的目录或文件,默认会继承default acl所设置的权限。
代码语言:javascript复制#设置默认的ACL Mask权限为rwx
hadoop fs -setfacl -R -m default:mask::rwx /user/hive/warehouse
#设置hue用户在当前文件夹下创建的新文件,默认的ACL权限为rwx
hadoop fs -setfacl -R -m default:user:hue:rwx /user/hive/warehouse
#设置hue用户组在当前文件夹下创建的新文件,默认的ACL权限为rwx
hadoop fs -setfacl -R -m default:group:hue:rwx /user/hive/warehouse
这样的话,使用hue用户、hue用户组创建的表文件,自动会拥有rwx的权限。当然,你也可以一次性设置所有用户、用户组的default acl权限,而不是单独为每个用户进行设置,这样可以避免default acl设置过多的情况。
代码语言:javascript复制#设置所有用户在当前文件夹下创建新文件时,默认的ACL权限为rwx
hadoop fs -setfacl -R -m default:user::rwx /user/hive/warehouse
#设置所有用户组在当前文件夹下创建新文件时,默认的ACL权限为rwx
hadoop fs -setfacl -R -m default:group::rwx /user/hive/warehouse
后话
如果有帮助的,记得点赞、关注。在公众号《数舟》中,可以免费获取专栏《数据仓库》配套的视频课程、大数据集群自动安装脚本,并获取进群交流的途径。
我所有的大数据技术内容也会优先发布到公众号中。如果对某些大数据技术有兴趣,但没有充足的时间,在群里提出,我为大家安排分享。