前言
我们都知道HDFS文件系统的访问控制由其内部目录,文件的权限所控制,和Linux文件系统一致。但是当出现HDFS和别的组件进行关联使用时,我们是否还能做到预期的控制效果呢?比如Hive和HDFS的使用,Hive也有它自己独立一套的用户权限体系。本文笔者来简单聊聊HDFS的权限访问控制,我们不聊最简单的情况,只聊那些在生产中实际可能会遇到的场景。
典型场景:权限信息不一致情况
文件系统信息在使用过程中是有可能出现新老数据文件的权限不一致问题,而此时访问的用户也可能是老用户或者是全新的一个用户。那么这里就有可能会出现权限访问的问题。举个笔者在实际工作中遇到的一个问题:
在早期阶段,涉及到数据开发的应用都用账号data来跑,自然的,此账号所建的文件及目录的owner都是data。但实际上它的真实用户就是一个应用层面的项目账号。用公共账号看似方便了数据读写流程控制,但是它有权限过大的风险,而且很容易发生越权操作行为。A用户以data账号身份操作执行了B用户以data账号写出的数据文件。因为都是data账户执行,操作不会被拒绝。
所以后续地,我们就会想到账户拆分,然实际用户传进来,然后创建其owner属于自身的数据文件目录。那么这个时候,就会出现,新老数据以及新老用户共存的情况,如下所示:
old files: /user/data/A_files owner:data
new files: /user/A/A_files owner:A
当然我们说,拆分出来的用户A访问它自身新产生的数据是完全没有问题。但是如果它想