普通用户访问hadoop文件管理系统
如果分布式文件系统的安装用户是root的话,那么,对于一个普通用户来说,是不能对hdfs的文件目录进行读写操作。
linux操作系统:cent OS 6
普通用户使用命令
hadoop fs -mkdir /normal
这样的命令就会报错:
permisson denined user='yourusername',access= xxxx,inode = 'xxxxx'.. //这类的报错信息
那么如何去做可以实现让普通用户操作hadoop分布式文件管理系统?
最简单的方法:
hadoop fs -chmod -R 777 /
使用上述的命令,那么hadoop文件管理系统上面的文件夹的权限是drwx rwx rwx
,文件的权限是rwx rwx rwx
那么普通用户就可以成功的访问hdfs了,可以执行写入hadoop 分布式文件系统。
但是这样的话,所有的普通用户都能访问hdfs,然后我就在想,能不能精确的划分用户的权限呢?比如这个目录我只允许一部分用户具有访问权限,其它的同类型用户没有访问权限。
那么我目前有一个这样的做法:
root权限下:
在hadoop 分布式文件系统上创建一个目录/jack
hadoop fs -mkdir /jack
这个目录在hdfs上的所属用户是root
这个目录在hdfs上所属的用户组是superGroup
创建一个普通用户jack
useradd jack
切换到普通用户jack
su jack
jack用户尝试创建文件夹
hadoop fs -mkdir /jack/mydirectory //会报错
那么如果这样做
su root
hadoop fs -chown -R jack:jack /jack
usermod -a -G jack jack
再次操作
su jack
hadoop fs -mkdir /jack/mydirectory
嗯,这样就OK了
创建其他用户
su root
useradd tom
su tom
hadoop fs -mkdir /jack/tom
这样就会报错了,权限不足
以上就是我对hadoop文件系统分配用户权限的操作
后续
但是我在hdfs中的/user/hive的相关权限控制的时候,却发现在使用hive的时候必须要给其他用户写入操作,也就是说,所有用户都能对hive的数据进行写入操作。所以,意思就是jack创建的hive表可以被tom删除。。。
所以如果有更好的方法,或是我的这个做法有什么问题的话,感谢在文章末尾留言。谢谢!共同学习,共同进步!