要明确的是,我并没有要求在 HDFS中设置权限,而是在ext3或在HDFS运行的各个数据节点机器上使用的任何文件系统。
我知道我们设置了sudo chown hduser:hadoop /app/hadoop/tmp
,因此用户hduser
是文件所有者,但我想知道权限位的指南(chmod)在这些文件上。
答案 0 :(得分:2)
如果您将权限设置为 755 (更糟 777 ),则任何人都可以读取基础文件系统中的文件,这肯定是一个安全问题。限制性权限配置(例如 700 )有一定道理。这可以防止未经授权的用户只使用本地磁盘打开和读取文件,而不是使用HDFS API。
在Hadopo version 0.22, 0.23 fix的安全配置群集中,datanode数据目录(由dfs.datanode.data.dir.perm配置)的权限现在默认为0700.启动时,datanode将自动更改权限匹配配置的值。
在1.0中,datanode检查这些值是否相同,如果它们不同则拒绝启动。如果已经提供给数据存储位置的权限违反了为Hadoop配置的默认权限,则可能会出现以下异常,例如以下情况。
WARN org.apache.hadoop.hdfs.server.datanode.DataNode:无效 dfs.data.dir中的目录:权限不正确 / disk1 / datanode,预期:rwxr-xr-x,而 实际:rwxrwxr-x
我不太确定其他版本中发生了什么。你可能想看看自己。
答案 1 :(得分:1)
我不知道我是否正确理解了你的问题,但这里有一些信息:
设置本地文件系统的权限
设置权限显然是重要的并且是必需的。实际上,此权限可以通过阻止非用户甚至非所有者修改您的数据来强制执行您的群集安全性。 即使你可能会使用较低的安全性来设置你的集群,在安装之后你可以修改它们以便安全使用。
顺便说一句,将你的许可设置为777几乎从来都不是一个好的解决方案,即使它并不意味着直接的麻烦。
[编辑]:良好的行为是试图尽可能减少权利。因此,当Hadoop工作时,尝试设置较低的访问权限(最好是720)。但我无法保证hadoop可以使用755以外的其他权限,因为它是默认值。
几乎偏离主题
值由以下设置:所有者用户其他
每个值都有3个功能:Read Write Execute(按此顺序)
由于这些功能可以设置为true(1)或false(0),因此它会产生二进制值给出的八进制值。
例如
对于你想要的所有者,所以rwx => 111 = 4 + 2 + 1 = 7
仅供用户阅读和执行,r-x => 101 = 4 + 0 + 1 = 5
和其他人一样,r-x => 101 = 4 + 0 + 1 = 5
所以你必须做一个chmod 755文件
用于主机文件系统上的hdfs权限
Hadoop对其文件系统上的文件和目录访问权限非常敏感。因此,如果您没有正确设置它们,它可能会抛出异常甚至阻止namenode或datanode启动 据我所知,你的文件的某些部分必须由hadoop拥有:hadoop或hdfs:hadoop和其他一些mapred:hadoop(根据你的hdfs和mapred用户和组)。