HDFS权限
HDFS分布式文件系统
在HDFS中也有超级用户的概念,在linux中超级用户为root,在hdfs中为namenode启动用户。当前状况下hadoop的安装部署程序超级用户为root,数据存放目录的权限拥有者也为root。

有关大数据学习从0到1的系列,可以参考如下文章:
添加用户


赋予目录权限
接下来我们给god用户赋予hadoop的目录权限。
chown -R god /opt/bigdata/hadoop-2.6.5/
同时修改数据存储目录拥有者
chown -R god /var/bigdata/hadoop/
用户免密
接下来切换用户,给新用户做ssh免密操作。同时修改免密文件
su god
ssh-keygen -t rsa
chmod 600 authorized_keys 
免密配置完成,god用户可以毫无阻碍登录二,三,四节点了。

然后同时配置node2节点进行免密登录1的操作。
修改配置文件
在hdfs-site.xml配置文件中,我们需要更改一下免密登录

然后分发到其他三个节点。

启动Hadoop集群
接下来,我们使用god用户启动hadoop集群

查看进程详情,会发现我们使用god用户启动了namenode进程。

创建目录
接下来我们用god用户创建目录,会发现在HDFS文件系统中,该目录的拥有者为god。
hdfs dfs -mkdir -p /user/god
切换用户
此时我们切换用户到root,再次启动hdfs,然后使用root用户创建hdfs目录。发现目录拥有者为root。

权限检测
此时我们使用root用户去god用户下创建目录,我们会发现可以创建成功,因为此时的启动用户为root所以,root为超级用户。

如果此时切换到god用户,使用god用户在root用户下创建目录,会发现,访问被拒绝。

但是god用户仍然可以使用自己的目录。

此时我们停止集群,改用god用户启动namenode

用户组
hdfs不能够创建用户,但是有用户组和权限的api操作。我们使用god用户创建一个目录,并把该目录归属给某个特定的组。如下
hdfs dfs -mkdir -p /temp
hdfs dfs -chown god:devGroup /temp
权限标识符
此时组的权限是没有写的。
rwx
二进制 十进制
001 1
010 2
100 4
如果是读写权限,不是执行,那就是如下
二进制 十进制
110 000 000 600
rw- --- ---
如果rwx权限都打开,那就是
二进制 十进制
111 000 000 700
rwx --- ---
如果我们要把用户组的权限也打开,那就是
二进制 十进制
111 111 000 770
rwx rwx ---
如果我们要把其他人权限也打开,让所有人都拥有文件的各种操作权限,那就是
二进制 十进制
111 111 111 770
rwx rwx rwx 777我们使用如下命令,就可以让temp目录,能够让devGroup用户组
hdfs dfs -chmod 770 /temp
添加用户到组
接下来我们添加一个good用户到组devGroup。此时我们需要回到linux系统
useradd good
groupadd devGroup
usermod -a -G devGroup good
此时我们切换good用户,查看用户组信息。发现已经同步到hdfs系统中了。
hdfs groups
此时我们使用good用户在此目录下创建一个文件。系统显示创建成功,但是由于其他用户没有读取权限,我们无法打开这个目录。此时根据上述权限知识的学习,我们只需要修改temp目录的后三位权限,应该就可以访问了。

修改其他人权限
hdfs dfs -chmod 775 /temp然后发现web页面可以访问了。大功告成!!!!!!





