之前在谈到HDFS常用命令的时候,说过hdfs的文件权限验证与linux系统的类似,但hdfs的文件权限需要开启之后才生效,否则在HDFS中设置权限将不具有任何意义!而在设置了权限之后,正常的HDFS操作可能受阻,这种情况下我们就需要伪造用户!本篇博客,小菌将为大家带来关于HDFS权限问题以及伪造用户的相关内容!
首先我们需要先停止集群,在node01机器上执行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0
sbin/stop-dfs.sh
然后修改node01机器上的hdfs-site当中的配置文件
cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim hdfs-site.xml
往其中添加如下内容:
<property>
<name>dfs.permissions</name>
<value>true</value>
</property>
修改完成之后配置文件发送到其他的机器上去
scp hdfs-site.xml node02:$PWD
scp hdfs-site.xml node03:$PWD
重启hdfs集群
cd /export/servers/hadoop-2.6.0-cdh5.14.0
sbin/start-dfs.sh
随意上传一些文件到我们Hadoop集群当中准备测试使用!
cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
hdfs dfs -mkdir /config
hdfs dfs -put *.xml /config
hdfs dfs -chmod -R 600 /config/
我们可以看到HDFS的config目录下的所有文件均没有可执行权限!
然后使用代码准备下载文件
@Test
public void getConfig()throws Exception{
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.100.100:8020"), new Configuration());
fileSystem.copyToLocalFile(new Path("/config/core-site.xml"),new Path("file:///f:/core-site2.xml"));
fileSystem.close();
System.out.println("上传成功!");
}
果不其然,发现了程序报错,说没有权限访问。说明我们HDFS的权限校验生效了!这种情况下,我们就需要伪造用户!
如上图所示,伪造用户后我们再运行程序,发现程序运行成功了!
文件也成功下载到了本地!那么本次的分享就到这里了,小伙伴们有什么疑惑或好的建议可以积极在评论区留言,小菌后续还会推出HDFS系列的其他内容,希望大家持续关注小菌ヾ(๑╹◡╹)ノ"!