我使用以下代码删除hdfs文件系统上的文件
conf = new org.apache.hadoop.conf.Configuration();
// TODO: Change IP
conf.set("fs.defaultFS", "hdfs://aaa.bbb.com:1234/user/hdfs");
conf.set("hadoop.job.ugi", "hdfs");
conf.set("fs.hdfs.impl",
org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
);
conf.set("fs.file.impl",
org.apache.hadoop.fs.LocalFileSystem.class.getName()
);
fs = FileSystem.get(conf);
fs.delete(new Path("/user/hdfs/file.copy"), true);
我创建了一个名为" xyz "的用户在我的本地机器上,令我惊讶的是,我能够删除hdfs文件系统中的文件( file.copy ),其中所有者名为 xyz 的namenode。这意味着有权访问namenode url的人可以通过创建hdfs或root用户来删除任何文件吗?
我知道Java API有一种使用Kerberos对用户进行身份验证的方法,我相信我们的hadoop系统配置有问题。有人可以帮我正确设置安全性吗?我相信远程用户应该提供一些密钥或密钥文件来验证自己。只是用户名不会做!
PS:我正在使用Cloudera 5.3.1
答案 0 :(得分:1)
是的,如果您没有在群集上启用Kerberos身份验证,那么您根本就没有身份验证。如果您关心数据,则绝对应该启用Kerberos身份验证。