首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法更改hdfs目录的读写权限

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

Stack Overflow用户
提问于 2017-12-20 05:04:17
回答 2查看 16.2K关注 0票数 4

我试图将文本文件复制到hdfs位置。

我面临访问问题,所以我尝试更改权限。

但是,我无法在下面的错误中改变相同的情况:

代码语言:javascript
复制
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文件夹的完整读写权限。

EN

回答 2

Stack Overflow用户

发布于 2017-12-20 05:44:53

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

现在的用户甚至需要一个用户目录才能运行mapreduce作业,所以首先需要sudo su - hdfs才能成为HDFS超级用户。

然后运行这些来为用户帐户创建HDFS目录。

代码语言:javascript
复制
 hdfs dfs -mkdir -p /user/chaithu
 hdfs dfs -chown -R chaithu /user/chaithu
 hdfs dfs -chmod -R 770 /user/chaithu

然后是来自hdfs用户的exit,而chaithu现在可以写入它自己的HDFS目录。

代码语言:javascript
复制
hadoop fs -put test.txt

仅这一项就会将文件放入当前用户的文件夹中。

或者,如果这对您来说是太多的工作,而不是写信给/tmp

一个懒惰的选项是重写您的用户帐户给超级用户。

代码语言:javascript
复制
export HADOOP_USER_NAME=hdfs 
hadoop fs -put test.txt /user

这就是hadoop在默认情况下不安全或强制用户帐户访问的原因(即在生产中永远不要这样做)。

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

代码语言:javascript
复制
 <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
票数 6
EN

Stack Overflow用户

发布于 2017-12-20 05:44:48

如果您观察到您的hdfs dfs -ls结果,您将看到只有HDFS超级用户拥有对该路径的权限。

这里有两个解决方案,

一个是通过根用户将chaitu的权限更改为chaitu,并将chaitu作为用户或所有者,类似于这个hdfs dfs -chown -R hdfs:chaitu /path,那么您将能够访问该所有者。其他肮脏的方法是从根源上给hdfs dfs -chmod -R 777 /path,从安全的角度来看,这777是不好的。

第二种是使用ACLS,它给您临时的访问权限。

请通过这个链接了解更多。

关于ACLS的更多信息

这是非常基本和重要的学习,尝试以上建议的那些,并让我知道,如果这些不工作,我可以帮助更多的基础上,你得到的错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47899108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档