Hadoop 无法更改hdfs目录的读写权限

Hadoop 无法更改hdfs目录的读写权限,hadoop,hdfs,Hadoop,Hdfs,我正在尝试将文本文件复制到hdfs位置。 我面临访问问题,因此我尝试更改权限。 但我无法改变同样的错误: chaithu@localhost:~$ hadoop fs -put test.txt /user put: Permission denied: user=chaithu, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x chaithu@localhost:~$ hadoop fs -chmod 777 /user chmo

我正在尝试将文本文件复制到hdfs位置。
我面临访问问题,因此我尝试更改权限。
但我无法改变同样的错误:

chaithu@localhost:~$ hadoop fs -put test.txt /user
put: Permission denied: user=chaithu, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

chaithu@localhost:~$ hadoop fs -chmod 777 /user
chmod: changing permissions of '/user': Permission denied. user=chaithu is not the owner of inode=user

chaithu@localhost:~$ hadoop fs -ls /
Found 2 items
drwxrwxrwt   - hdfs supergroup          0 2017-12-20 00:23 /tmp
drwxr-xr-x   - hdfs supergroup          0 2017-12-20 10:24 /user

请帮助我如何将所有用户访问HDFS文件夹的权限更改为完全读写权限。

如果您观察您的
HDFS dfs-ls
结果,您会发现只有HDFS超级用户具有访问该路径的权限

这里有两种解决方案

一种是通过root用户更改对chaitu的权限,并使chaitu成为用户或所有者,类似于这样的
hdfs dfs-chown-R hdfs:chaitu/path
,然后您将能够作为所有者访问该权限。另一个肮脏的方法是从根目录中给出
hdfs-dfs-chmod-R 777/path
,从安全角度来看,这777不好

第二种是使用ACL,它为您提供临时访问权限

请仔细阅读,以获得更多的理解

更多关于


这对您来说是非常基本和重要的,请尝试上述建议,如果这些建议不起作用,请告诉我,我可以根据您遇到的错误提供更多帮助。

首先,您不应该直接写入/user文件夹,也不应该在其上设置777

您的当前用户甚至需要一个用户目录来运行mapreduce作业,因此您需要
sudo su-hdfs
首先成为hdfs超级用户

然后运行这些为您的用户帐户创建HDFS目录

 hdfs dfs -mkdir -p /user/chaithu
 hdfs dfs -chown -R chaithu /user/chaithu
 hdfs dfs -chmod -R 770 /user/chaithu
然后退出hdfs用户的
exit
,此时
chaithu
可以写入自己的hdfs目录

hadoop fs -put test.txt
仅此一项就可以将文件放入当前用户的文件夹中


或者,如果这对您来说工作量太大,请改为写/tmp


一个懒惰的选择是将您的用户帐户重写为超级用户

export HADOOP_USER_NAME=hdfs 
hadoop fs -put test.txt /user
这就是为什么hadoop在默认情况下不安全或不强制用户帐户访问(也就是说,在生产环境中从不这样做)


最后,您可以始终完全关闭hdfs-site.xml中的权限(同样,仅在开发阶段有用)


dfs.0权限
假的

@Chaitu从问题中删除bigdata和Thread标签。
 <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>